第二次斜杠后带有额外字符的URL的mod-rewrite

时间:2016-07-21 17:36:59

标签: apache .htaccess redirect mod-rewrite

如何通过htaccess在第二个404 error之后为所有带有额外字符的网址返回/

e.g1:

http://www.example.com/blah-blah/ NOT重定向(第2 /后没有额外字符)

e.g2:

http://www.example.com/blah-blah/blah-blah重定向到404

e.g3:

http://www.example.com/blah-blah/blah-blah/重定向到404

e.g4:

http://www.example.com/blah-blah/blah-blah/blah-blah重定向到404

e.g5:

http://www.example.com/blah-blah/blah-blah/blah-blah/重定向到404

我试过这个,但不适用于eg3&例如5(以斜杠结尾的URL):

ErrorDocument 404 /404
RewriteBase /
RewriteRule ^[^/]+/.+ - [R=404,L]

1 个答案:

答案 0 :(得分:0)

只有在第二次斜杠后有一些字符时才重定向请求,你需要这个重写规则

ErrorDocument 404 /404
RewriteBase /
RewriteRule .*/.+ - [R=404,L]

PS:当你在regexp之后使用短划线时,它表示将匹配传递给文件系统。

编辑:这个模式/.*/.+与下一个例子匹配,但是我忘记了RewriteBase指令,所以你需要删除模式中的第一个斜杠(我之前编辑RewriteRule)

  • / blah-blah / =&gt; <不匹配
  • / blah-blah / blah-blah =&gt;匹配
  • / blah-blah / blah-blah / =&gt;匹配
  • / blah-blah / blah-blah / blah-blah / =&gt;匹配

PS:您可以使用此工具来检查您的重写是否有效rewrite-rule-tester