2013-12-11 81 views
0

我试图清理我的网址从PHP的多模重写规则冲突

localhost/xxx/profile.php?name=google

localhost/xxx/google 

下面是我的htaccess文件

RewriteEngine On 
    RewriteBase /creatorsink/ 
    RewriteRule ^([a-z]+)/?$ profile.php?name=$1 [L,QSA] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME}.php -f 
    RewriteRule ^(.*)$ $1.php [L] 

如果我删除RewriteRule ^(.*)$ $1.php [L]它的正常工作,如果我这样做然后URL不打开没有.php扩展名

有没有什么办法可以同时使用而不会相互冲突。

回答

0

规则的排序导致问题。你的第一条规则是抓取每个URI。颠倒顺序,让你的第一条规则更加聪明一些。

RewriteEngine On 
RewriteBase /creatorsink/ 

RewriteRule ^([^/]+)/?$ profile.php?name=$1 [L,QSA] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}/creatorsink/$1.php -f 
RewriteRule ^(.+?)/?$ $1.php [L] 
+0

感谢您的快速回复,但不幸的是它不工作。检查我的问题更新.htaccess修改。任何猜测我在哪里做错了? –

+0

正如你可以看到我的答案,你需要添加'RewriteCond%{REQUEST_FILENAME} .php -f'行也在你的第二条规则 – anubhava

+0

到目前为止没有运气,..现在得到.php删除问题。请检查我的上述编辑更新的htaccess文件内容。 –