2012-07-09 169 views
1

我是一個新手,我試圖找出正確的301重定向爲以下頁面。我希望我在這裏明確:)在我的.htaccess文件中,我想將頁面「向上」重定向到一頁,而不必單獨做每一頁。如何301重定向頁面「向上」頁面

我原來的頁面看起來像下面這樣:

www.doctors.com/skin/california/best-skin-doctors-california/ 
www.doctors.com/skin/california/best-skin-doctors-california/?page=1 
www.doctors.com/skin/california/best-skin-doctors-california/?page=2 

....等。 ?....高達喜歡/頁= 33個

多類別和規定,如:

www.doctors.com/heart/new-york/best-heart-doctors-new-york/ 
www.doctors.com/heart/new-york/best-heart-doctors-new-york/?page=1 
www.doctors.com/heart/new-york/best-heart-doctors-new-york/?page=2 

...等。 .....再升喜歡/頁= 24

因爲我已經改變了頁面結構,以消除長URL ......是這樣的:

www.doctors.com/skin/california/ 
www.doctors.com/skin/california/?page=1 
www.doctors.com/skin/california/?page=2 

等.....和同樣....

www.doctors.com/heart/new-york/ 
www.doctors.com/heart/new-york/?page=1 
www.doctors.com/heart/new-york/?page=2 

我怎麼能「批量」重定向與長的URL到新,縮短的版本在我的.htaccess文件中的原始頁面?非常感謝您的時間和考慮!

回答

1

使用mod_alias中,你可以簡單地在.htaccess文件在你的文檔根補充一點:

RedirectMatch 301 ^/([a-z\-]+)/([a-z\-]+)/[a-z\-]+/$ /$1/$2/ 

但是如果你需要對重定向是如何工作的進一步限制,你可以使用Apache's mod_rewrite模塊。看看RewriteCond指令,您可以對規則施加條件並將所有內容放在.htaccess中。主規則看起來與mod_alias'RedirectMatch非常相似。例如:

RewriteRule ^([a-z\-]+)/([a-z\-]+)/[a-z\-]+/$ /$1/$2/ [R=301,L] 

在這兩種情況下,查詢字符串(page = 3部分)都會簡單地附加到新目標。回顧過去的different things you can do with RewriteCond,說如果你想排除當請求是針對像/images//themes/做出這樣的規則:

RewriteCond %{REQUEST_URI} !^/images/ 
RewriteCond %{REQUEST_URI} !^/themes/ 
RewriteRule ^([a-z\-]+)/([a-z\-]+)/[a-z\-]+/$ /$1/$2/ [R=301,L] 

因此,如果要求不符合/images/啓動請求不從/themes/開始,然後應用規則。這個例子會使得http://host.com/themes/subSilver/magic-icons/的請求不會被重定向到http://host.com/themes/subSilver/

+0

第一個似乎很好。非常感謝Jon! – loren321 2012-07-09 17:09:57