我无法在我的 .htaccess 文件中使用第二个重写规则

I can't get the second rewrite rule to work in my .htaccess file

我正在本地使用 wamp 服务器 (v2.5) Windows 7。我的项目中有一个用于主前端控制器的工作重写规则,如下所示:

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule (.*) index.php/ [NC,L]

它成功地从查询中删除了 .php。从这个主前端控制器 index.php 我有一个 link 到另一个名为 theme.php 的前端控制器,其中我使用 menu links w/o the.php 文件扩展名,像这样:

theme/regions

代替

theme.php/regions

为此,我需要添加第二个重写规则来添加 php 扩展,如下所示:

RewriteRule ^theme($|/$)      theme.php/ [NC,L]

我唯一得到的是一个 404 页面:-(。

如果能提供一些有关如何处理此问题的提示,我将不胜感激。

你的第二个 RewriteRule 独立于其他人工作,在你的问题中应该放在其他人之上。

此外,格式错误 - 您不需要捕获或附加任何内容。

RewriteRule ^theme/?$ theme.php [NC,L]

您需要将您的主题规则 放在 index.php 的一般路线之前。您需要参考 /theme/ 之后的内容,例如:

RewriteRule ^theme(/?.*)$ theme.php [L]

此外,如果您启用了 Multiviews,此规则将不起作用,但是,无论如何,这实际上非常适合 Multiviews,因此您可以尝试启用它使用规则重写 theme:

Options +Multiviews