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

时间:2015-02-09 19:39:53

标签: .htaccess url-rewriting

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

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

它成功地从查询中删除了.php。从这个主要的前端控制器 index.php 我有一个链接到另一个名为 theme.php 的前端控制器,我使用菜单链接没有.php文件扩展名,如这样:

theme/regions

代替

theme.php/regions

要实现这一点,我需要添加第二个重写规则来添加php exension,如下所示:

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

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

我会非常感谢有关如何解决这个问题的一些提示。

2 个答案:

答案 0 :(得分:0)

您的第二个RewriteRule独立于其他RewriteRule ^theme/?$ theme.php [NC,L] 工作,应该置于问题的其他位置之上。

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

{{1}}

答案 1 :(得分:0)

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

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

此外,如果您启用了Multiviews,此规则将无法正常工作,但是,这实际上非常适合Multiviews,所以您可以尝试打开它而不是使用规则来重写theme

Options +Multiviews