一些搜索引擎在其索引中列出了网址,其中包含两个错误。我想将它们重定向到正确的位置。我的问题是,我想要结合两个RewriteRules,因此只需要一个重定向请求。
拼写错误的请求路径如下所示:
。 / subdir / page.php?id = 0 & amp; name = text
我用粗体格式标记了问题。起初我想重写&放大器;单一的char&在第二步中,我想将subdir重写到根目录。
我在我的htacces中有这个规则:
RewriteCond %{THE_REQUEST} \s(.*?)\&\;([^\s]*) [NC]
RewriteRule ^ /%1&%2 [N,NE]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^feeds/print.php(.*) /print.php$1 [L,NC,R=301]
subdir的第二个条件已经正常工作,但第一个出现问题!我想使用N-Flag将替换的请求用于下一个条件。似乎服务器正在运行无限循环或类似的东西。如果我使用L替换它的N工作,但会进行两次重定向。
答案 0 :(得分:0)
由于您使用N
标志进行完全重定向,因此您不需要R
。第一个规则将在第一个删除&
之后执行。
你的正则表达式也需要一些调整。试试这段代码:
RewriteCond %{THE_REQUEST} \s/+(.*?)&(\S*)\s [NC]
RewriteRule ^ /%1&%2 [L,NE,R=302]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^feeds/print\.php(.*)$ /print.php$1 [L,NC,R=301]