2013-09-29 56 views
1

我正在處理我的網站的URL。我剛纔重寫URL從htaccess重寫條件不起作用

http://www.website.com/index.php?url=some-text 

http://www.website.com/some-text 

對於這個我用下面的.htaccess的代碼

Options +SymLinksIfOwnerMatch 
RewriteEngine on 

RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA] 


現在,我想再添變數​​在URL中。

http://www.website.com/index.php?url=some-text&page=1 

我想重寫它像

http://www.website.com/some-text/1/ 
AND 
http://www.website.com/some-text/1 

我曾嘗試下面的代碼,但由於某種原因,它不工作,它顯示我的服務器錯誤。

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^(.*)/(.*)$ index.php?url=$1&page=$2 [L,QSA] 
RewriteRule ^(.*)/(.*)/$ index.php?url=$1&page=$2 [L,QSA] 
+0

不,你改寫其他方式。從'http:// www.website.com/some-text'到'http://www.website.com/index.php?url = some-text'。隨着用戶輸入地址,您始終會從原始請求開始尋找。請注意。 – hakre

+0

第一個代碼是否正常工作,並且只有在添加第二行後纔會出現內部服務器錯誤?另外,如果發生內部服務器錯誤,請檢查該服務器的錯誤日誌,並告知使用原因。它通常包含對您想知道的問題的更好描述,並將其添加到您的問題中。 – hakre

+0

爲什麼脫主題?請添加評論,以便我能理解我的錯誤。 –

回答

1

你不需要2條新規則。只有一個可選/就足夠了。您的完整代碼:

Options +SymLinksIfOwnerMatch -MultiViews 
RewriteEngine on 

RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?url=$1&page=$2 [L,QSA] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^([^/]+)/?$ index.php?url=$1 [L,QSA] 

在你的新代碼的另一個問題是,RewriteCond沒有得到應用,去年RewriteRule因爲這些適用於非常僅次於RewriteRule

+0

其工作,但現在的CSS和JavaScript文件不適用。 –

+0

這是人們在切換到漂亮的URL後遇到的最常見問題。解決方法很簡單:確保你的js,css等總是使用絕對路徑,即以'http://'或'/'開頭# – anubhava

+0

沒問題..謝謝你的幫助:) –