2015-06-01 60 views
1

我需要幫助。我正在嘗試重寫一些我的網址,但仍然收到錯誤消息。 我的網站是PHP開發的。我設法讓所有動態URL看起來都是靜態的。但對於一個類別,我無法找到適用的正確條件和規則。URL rewriting htacess

這裏是網址我想重寫的類型(它是動態的):

mywebsite.com/details/id/34556 (mywebsite.com/details/id/34556/vehicle-in england-to-rent) 
mywebsite.com/details/id/2312 (mywebsite.com/details/id/2312/new-car-london) 

我想有它這樣的:

mywebsite.com/vehicle/id/34556 (mywebsite.com/details/id/34556/vehicle-in england-to-rent) 
mywebsite.com/vehicle/id/2312 (mywebsite.com/details/id/2312/new-car-london) 

我將在條件我的htaccess文件,但目前爲止沒有結果。 這裏是我使用的代碼:

RewriteCond %{HTTP_HOST} ^mywebsite\.com$ [NC] 
RewriteRule ^(.*)$ http://www.mywebsite.com/$1 [R=301,L] 

RewriteCond %{REQUEST_URI} ^/details/id/([0-9]+)$ 
RewriteRule ^/vehicle/id/([0-9]+)$ [R=301,NE,L] 

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

我真的很感激幫助和建議。

在此先感謝

我終於能看到的變化需要在我的網頁瀏覽器,但編輯這樣的代碼:

RewriteCond %{REQUEST_URI} ^/?details/(.*)$ 
RewriteRule ^(.*)$ /vehicle/$1 [R=301,L] 

RewriteRule ^/?details/(.*)$ /vehicle/$1 [R=301,L] 

的URL瀏覽器現在按預期顯示。但是,該網頁是一個404錯誤頁面。我有期望的網址,但不是網頁。無論如何改變條件,使其工作?

由於

+0

我並不是Apache的重寫規則的忠實粉絲,但並不是'RewriteCond%{REQUEST_URI} ^/details/id /([0-9] +)$'表示只有在這種情況下才會應用更多的規則會見?那麼下面的規則將不會觸發,因爲它不符合條件。 – Keelan

+0

@ Camil Staps是的,你是對的。但是,包含這樣的條件的規則也不起作用:「RewriteRule ^(。*)$/vehicle /%1 [R = 301,L]」。 我也不是Apache的重寫規則的忠實粉絲,但它似乎是更簡單的方法,因爲我不想重寫裏面的代碼。 –

+0

對於正則表達式捕獲組,您應該使用'$ 1',而不是'%1'。 – Keelan

回答

0

嘗試使用以下代替:

# Remove the line: RewriteCond %{REQUEST_URI} ^/details/id/([0-9]+)$ 
RewriteRule ^details/id/([0-9]+)$ /vehicle/id/$1 [R=301,NE,L] 

第一部分是正在被測試的內容(即,正則表達式),並且所述第二部分是它應重定向到時匹配。

+0

謝謝。我試着用這個:[code](RewriteRule^/?details /(。*)$/vehicle/$ 1 [R = 301,L]) 它在瀏覽器上工作,不幸的是,我得到一個404錯誤頁面作爲輸出 –

+0

這不是我在我的答案中給出的規則。但是,我已經更新了它以刪除主要的斜槓。請使用我的規則,因爲它顯示(它應該是你的第一條規則之一)。如果您收到404錯誤,那麼錯誤來自哪裏?你的PHP應用程序拋出錯誤,還是Apache拋出它? –

+0

是的,我也試過你的代碼。網址正在改變,但輸出只是一個缺少的頁面。頁面不存在...可能不應該在這裏重寫。這就像一個簡單的重定向到一個新的網址,而不是重寫URL。 –

0

對不起,遲到的回報。 檢查服務器幾個星期後,我終於發現缺少的東西。 你提供的rewriteRule幾乎是完美的。但唯一的問題是,htaccess將查詢重定向到一個新的url,但由於我沒有創建新的頁面,輸出結果是一個404錯誤。 所以,要正確使用,我必須創建一個新的php文件(使用與前面相同的代碼)並以不同的方式對它進行重命名(車輛)。我使用上面提供的代碼應用htaccess重定向。 它完美的作品。 謝謝!