RewriteRule不能正常工作

时间:2016-05-20 01:44:41

标签: apache .htaccess mod-rewrite

规则实际上很简单。

RewriteCond %{QUERY_STRING}  ^$
RewriteRule ^path2/myoldurl\.php$ /mynewurl? [R=301,NE,NC,L]
RewriteRule ^path2/myoldur\.php$ /mynewurl? [R=301,NE,NC,L]

第一条规则已存在多年,并且正在发挥作用。但是当我试图添加第二个从第一个字母中删除一个字母时,根本就没有工作。当我使用Redirect或RedirectMatch更改RewriteRule时,它正在工作。

我不能使用RedirectMatch和Redirect因为我还要清除查询字符串。

有什么想法它不起作用吗?我已经重新启动了apache。可以在某些地方使用这些RewriteRule缓存吗?

修改

我刚刚意识到,即使删除了这两条规则,旧规则仍然有效。但我确定.htaccess正在工作,因为当我在此文件中添加Redirect 301或RedirectMatch时,它会重定向新的url。请帮忙!!!!

编辑2

我意识到的另一件事是,一旦我添加了一个新的Redirect脚本,它就可以工作了。它在我取消它之后仍在工作:(

1 个答案:

答案 0 :(得分:1)

您可以简单地将该字母l设为可选。所以它将匹配其中任何一个,你有一个重写。

RewriteCond %{QUERY_STRING}  ^$
RewriteRule ^path2/myoldurl?\.php$ /mynewurl? [R=301,NE,NC,L]

在尝试新规则之前清除浏览器缓存。