我有一个重写规则,如果你输入:
www.whatever.com/profile-one.php
这是你看到的网址,但实际的模板页面是:
www.whatever.com/profile.php
以下是htaccess中的行:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)([^/])$ http://www.whatever.com/$1$2/ [R=301,L]
RewriteRule profile-(.*)\.php$ profile.php?name=$1
我的问题是,如果您访问的网址如下:
www.whatever.com/second/profile-one.php
即使“第二个”目录中不存在profile.php模板,它仍会尝试恢复配置文件页面。什么是防止这种情况的最佳方法?
答案 0 :(得分:0)
这是由于错误的正则表达式而发生的。您需要在第二条规则中使用开始锚点:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)([^/])$ http://www.whatever.com/$1$2/ [R=301,L]
RewriteRule ^profile-(.*)\.php$ profile.php?name=$1 [L,QSA]