2014-02-17 262 views
1

舊網站的網址是這樣的: example.com/dsk/newslong.php?id=5206重寫舊網站的網址到新網站的網址

新網站的網址是這樣的: example.com/dsk/? p = 5206

下面的.htaccess不能以任何方式工作。 多,我有5K的帖子,來圖,並希望有它的工作就像一個宏:

Options +FollowSymlinks 
    RewriteEngine on 
    RewriteRule ^/dsk/newslong.php?id=5206(.*)$ http://www.example.biz/dsk/?p=5206$1 [r=301,nc] 

(每之後http://www.example.com/dsk/newslong.php?id=XXX應rewrited到/ DSK/P = XXX是多少?)一旦安裝了newsite,服務器正在返回在newslong.php上找不到的404。

回答

2
RewriteEngine on 
RewriteCond %{REQUEST_URI} ^/dsk/newslong.php$ 
RewriteCond %{QUERY_STRING} ^(id=[0-9]+)$ 
RewriteRule .* /dsk/?%1 [L,QSA] 

RewriteRule僅匹配URI,您不能嘗試匹配查詢字符串。 但是你可以在RewriteCond條件匹配它...

話雖這麼說,如果你不關心查詢字符串的內容,但希望所有指向newslong.php重定向到新位置的URL,那麼它的簡單得多:

RewriteEngine on 

RewriteCond %{QUERY_STRING} ^id=[0-9]+$ 
RewriteRule ^dsk/newslong\.php$ /dsk/ [L,R] 

如果省略了R,那麼瀏覽器將不會被重定向(用戶會一直看到舊的URL),取而代之的是內容將通過子請求提供服務。

+0

@anubhava取決於...如果他只想在查詢字符串中用'?id = num'重寫文章,而不是過度殺傷... – poncha

+0

我會添加一個關於將整個uri重寫爲新的註釋,儘管 – poncha

+0

抱歉編輯您的答案,但我認爲比在代碼中編寫代碼更容易解​​釋。 – anubhava

相關問題