.htaccess重写规则中是否有任何错误

时间:2013-12-11 05:10:25

标签: php regex apache .htaccess

我正在尝试使用Apache中的.htaccess为我的网站制作搜索引擎友好的网址

我想将网址http://localhost/simple_blog/tmp重定向到

http://localhost/simple_blog/tmp.php

这是我的重写规则

 RewriteEngine On    # Turn on the rewriting engine
 RewriteRule ^tmp/?$  tmp.php [NC,L]

使用

时效果很好

http://localhost/simple_blog/tmp/

http://localhost/simple_blog/tmp

但是当我使用

http://localhost/simple_blog/tmp.

为什么会重定向到

http://localhost/simple_blog/tmp.php

我预计它应该抛出404因为根据正则表达式它应该在开头匹配'tmp'而'/'是可选的然后结束字符串

正则表达式中是否有错误?

1 个答案:

答案 0 :(得分:1)

^断言字符串开头的位置,即http://...

?量词确实使/成为可选项。

所以我认为正确的正则表达式将tmp/?$用于你的目的......技术上应该有效。我不确定PHP如何处理正则表达式。

您也可以在正则表达式结束时尝试使用tmp/?(?!\.+)$这样的否定前瞻