2013-12-11 79 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文件內容。 –