Regex 重写上移目录
我有一个重写规则,如果您键入: www.whater.com/profile-one.php 这是您看到的url,但实际的模板页面是: www.whater.com/profile.php 以下是htaccess中的行:Regex 重写上移目录,regex,apache,.htaccess,mod-rewrite,rewrite,Regex,Apache,.htaccess,Mod Rewrite,Rewrite,我有一个重写规则,如果您键入: www.whater.com/profile-one.php 这是您看到的url,但实际的模板页面是: www.whater.com/profile.php 以下是htaccess中的行: RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$ RewriteRule (.*
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
我的问题是,如果您访问以下url:
www.whater.com/second/profile-one.php
尽管profile.php模板不存在于第二个目录中,但它仍会尝试返回profile页面。请告诉我,防止这种情况发生的最好方法是什么?这是由于这里的正则表达式错误造成的。您需要在第二条规则中使用开始锚定:
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]
再次感谢你,阿努巴瓦!