.htaccess两个重写规则之间的冲突

时间:2015-10-18 09:46:45

标签: php apache .htaccess mod-rewrite url-rewriting

在我的网站上,两个重写规则相互冲突 我的用户网址为= http://twekr.com/sam 我的所有网页都像http://twekr.com/login

一样打开

现在这里是htaccess文件规则

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

RewriteRule ^([a-zA-Z0-9_-]+)$ profile.php?user=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ profile.php?user=$1

现在只有这个规则有效,因为它首先加载=

RewriteCond %{REQUEST_FILENAME} !-d

如果我将配置文件重写规则置于上面

RewriteRule ^([a-zA-Z0-9_-]+)$ profile.php?user=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ profile.php?user=$1 (then this works)

这不是

RewriteCond %{REQUEST_FILENAME} !-d (does not work)

htaccess规则有什么问题?

1 个答案:

答案 0 :(得分:0)

在添加.php扩展名

之前,您应检查是否存在.php文件
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([\w-]+)/?$ profile.php?user=$1 [L,QSA]