2015-12-14 57 views
1

我有一個查詢,我希望URL重寫嚮導可以幫助我,因爲這是一個超越我。重定向4個不同的URL到一個URL

我有以下網址:

http://www.domain.com/region/news/123456-article-name-goes-here.html http://www.domain.com/region/news/123456-article-name-goes-here.html?get_var=1234 http://www.domain.com/mobile/region/news/123456-article-name-goes-here.html http://www.domain.com/mobile/region/news/123456-article-name-goes-here.html?get_var=1234

我需要所有這些變化的重定向到URL的格式如下:

http://www.domain.com/region/article-name-goes-here/

所以我需要刪除'mobile /',刪除' news /',刪除'123456-',刪除.html,刪除任何GET變量,然後添加尾部斜槓。

要做到這一點,最好的方法是什麼?

非常感謝!

回答

1

我會說這是你所需要的:

RewriteEngine on 
RewriteRule ^/region/news/\d+-(.+)\.html$ http://www.domain.com/region/$1/ [R=301,L] 
RewriteRule ^/mobile/region/news/\d+-(.+)\.html$ http://www.domain.com/region/$1/ [R=301,L] 

你可以做一個規則,但上述是比較容易理解,所以我會用兩條規則。


注意:這是主機配置的版本。如果您需要使用.htaccess樣式文件,則必須從規則中的模式中刪除前導斜槓,因爲這些文件適用於相對路徑。但請注意,只要有可能,您應該更喜歡htaccess樣式文件的主機配置變體。這些文件出了名的錯誤容易出現,實施起來很麻煩,難以調試,並且真的會減慢服務器速度。所以只有依靠他們,如果你真的必須,例如,如果你沒有訪問主機配置。

+0

@PanamaJack的原始querystring這確實是可能的。不過,我認爲這是不好的風格。它使事情變得更加複雜和混亂,而沒有爲特定的應用程序提供好處。如果你實施這些規則,那麼你知道你在哪裏放置它們。 – arkascha

0

你可以只使用一個單一的規則來重定向這些網址:

嘗試:

RewriteEngine on 
RewriteRule ^(?:mobile/)?/([^/]+)/([^/]+)/([^-]+)-([^.]+)\.html$ http://example.com/$1/$4/? [NC,L,R] 

?在規則的末尾非常重要,因爲它丟棄了URL

相關問題