2016-03-03 52 views
1

所以現在,我的網站從www.example.com/username重新路由到他們的個人資料頁面,但我希望它從www.example.com/users/username重新路由。我的代碼目前是這樣的:.htaccess Mod-Rewrite規則不起作用?

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^([^\.]+)$ $1.php [NC] 
RewriteCond %{REQUEST_FILENAME} >"" 
RewriteRule ^([^\.]+)$ profile.php?user=$1 [L] 

我已經使用這個代碼試過了,但它給我的錯誤,指出該頁面無法找到:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^users/([^\.]+)$ $1.php [NC] 
RewriteCond %{REQUEST_FILENAME} >"" 
RewriteRule ^users/([^\.]+)$ profile.php?user=$1 [L] 

我已經嘗試過其他的選擇,但我不能似乎讓他們工作。我需要一個實際/用戶文件夾,還是應該重定向而不使用另一個文件夾?

+0

這是什麼呢? 'RewriteCond%{REQUEST_FILENAME}>「」''。我以前從來沒有見過。 – Halcyon

+0

這是一個「詞典字符串比較」(請參閱​​本頁1/3左右):http://httpd.apache.org/docs/current/mod/mod_rewrite.html我不是100%確定它是有意義的它在這裏使用的方式雖然... – CD001

+0

好的,但它對你有什麼作用?這只是比字符串比較大嗎? – Halcyon

回答

0

你可以在給定的順序使用這些規則:

RewriteEngine on 

RewriteRule ^users/([\w-]+)/?$ profile.php?user=$1 [L,QSA,NC] 

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

謝謝!完美的作品。 –

0

這條規則:

RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^users/([^\.]+)$ $1.php [NC] 

將重寫/users/foo.phpfoo.php我不認爲這是你想要的。


我認爲這是簡單的:

RewriteRule ^users/(.+)$ profile.php?user=$1 [NC] 

如果文件夾users不存在如果你想[^\.]+,而不是.+這很好,你不需要RewriteCond

但我不認爲你需要它。