2015-05-07 216 views
1

我有一個網址更改URL結構的htaccess

http://domain.com/wallpaper-name-of-wallpaper-id.html 

其中wallpaper-是網址的前綴和name-of-wallpaper是壁紙的標題,而id是壁紙的實際ID。我當前的.hataccess文件看起來像。

RewriteRule ^wallpaper-([^/]*)\.html$ wallpaper.php?permalink=$1 [L] 

,但我想將其更改爲

http://domain.com/wallpaper/name-of-wallpaper-id.html 

所以用戶誰將會進入舊網址會自動發送到與htaccess的新網址。

我試過。 RewriteRule ^wallpaper-([^/]*)\.html$ wallpaper/wallpaper.php?permalink=$1 [R,L]

但似乎不適合我。任何想法或幫助?

+0

看起來你改變了錯誤的一邊。嘗試在原始規則中替換 -/ –

+0

@JonStirling你的意思是RewriteRule ^(。*)/ wallpaper /(.*)$ $ 1/wallpaper- $ 2 [R,L] –

+0

你是如何從我的評論中獲得的?說實話,我一直在閱讀你的問題,我並不確定你在做什麼。你是否在規則替換之後將當前的規則替換爲新的結構,還是僅僅遵循將舊URL重定向到新規則的規則?或者兩者都不是? –

回答

2

現有規則的前面添加一個新的重定向規則:

Options -MultiViews 
RewriteEngine On 

RewriteRule ^(wallpaper)-([^.]+\.html)$ /$1/$2 [R=302,L,NC] 

RewriteRule ^wallpaper/([^.]+)\.html$ wallpaper.php?permalink=$1 [L,NC,QSA] 
+0

感謝您的支持回覆。但是這對我有效: 'RewriteRule ^(wallpaper) - ([^。] + \ html)$ http://domain.com/$1/$2 [R = 302,L,NC]' ' RewriteRule^wallpaper /([^。] +)。。html $ wallpaper.php?永久鏈接= $ 1 [L,NC,QSA]' –

+0

絕對不要使用302,你會打斷你所有的鏈接。改爲使用301。 – Franco

+0

'302'僅用於**測試**更改,否則瀏覽器將緩存不需要的URL。一旦測試,它可以改爲'301' – anubhava