我需要幫助。我正在嘗試重寫一些我的網址,但仍然收到錯誤消息。 我的網站是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錯誤頁面。我有期望的網址,但不是網頁。無論如何改變條件,使其工作?
由於
我並不是Apache的重寫規則的忠實粉絲,但並不是'RewriteCond%{REQUEST_URI} ^/details/id /([0-9] +)$'表示只有在這種情況下才會應用更多的規則會見?那麼下面的規則將不會觸發,因爲它不符合條件。 – Keelan
@ Camil Staps是的,你是對的。但是,包含這樣的條件的規則也不起作用:「RewriteRule ^(。*)$/vehicle /%1 [R = 301,L]」。 我也不是Apache的重寫規則的忠實粉絲,但它似乎是更簡單的方法,因爲我不想重寫裏面的代碼。 –
對於正則表達式捕獲組,您應該使用'$ 1',而不是'%1'。 – Keelan