2013-02-10 38 views
1

的網站,我就在過去這兩個網頁的工作:的mod_rewrite規則(或替代)重新組織目錄結構

http://www.africananimals.com/stripes/zebras

http://www.africananimals.com/news/zebras

(這些都不是實際的域名,只是例子。)

該目錄結構最近已重新組織,和URL同一頁面改爲:

http://www.africananimals.com/zebras/stripes

http://www.africananimals.com/zebras/news

我想的mod_rewrite規則(或更少消耗資源的替代方法,如重定向命令或類似的東西)受益那些擁有使用舊網址添加書籤的愛好者。我需要這個爲http // www.africananimals.com和http // africananimals.com /版本的URL工作。

我的解決辦法是這樣的:

Redirect /stripes/zebras http://www.africananimals.com/zebras/stripes 
Redirect /news/zebras http://www.africananimals.com/zebras/news 

- 但我不知道如果我是正確的。在正則表達式上很糟糕,對.htaccess只有一些膚淺的理解,我一定會感激一些指導。

回答

1

如果請求中不包含word斑馬它甚至不會嘗試這個正則表達式(保存cpu)。這將在開始時交換條紋或斑馬,並在斑馬結束時替換它。

RewriteEngine On 
RewriteCond %{REQUEST_URI} zebras 
RewriteRule ^(stripes|news)/zebras/?$ zebras/$1 [R,L] 

/?將使它能夠接受任何以/結尾的URI,因爲目錄應該是這樣。

+0

非常感謝Eric。太棒了。你能告訴我,你認爲我建議的「重定向」解決方案也可以,如果是的話,在這種情況下使用Redirect或mod_rewrite會消耗更多資源嗎? – 2013-02-10 19:33:06

+1

是的,你的工作也是如此,重定向(據我所知只是RewriteRule的一個快捷方式... [R,L]我相信我的速度會稍微快一些,因爲它只做1個正則表達式。請使用我的正則表達式重定向 – Eric 2013-02-10 19:35:05

+0

對於www和非www網址都適用嗎?(該網站是該服務器上的許多網站之一,並且我希望使該規則僅適用於該網站。) – 2013-02-10 19:40:00