2010-07-20 51 views
0

我有兩個域指向同一主機,說example1.com和example2.com。如何重定向FIRST,然後重寫使用mod_rewrite

我已經有一個重定向:

重寫規則^([A-ZA-Z0-9 - ] +)/ $ page.php文件Q = $ 1 [L]

到捕獲到像例1?的.com /你好世界/ => example.com/page.php?q=hello-world

現在我需要3個特定條件得到滿足:

1)example1.com/special/ => example2.com/special/ [僅適用於「特殊」]
2)example2.com/ => example2.com/special/
3)example2.com/anything-not-special/ => example1.com/anything-not-special/

我可以得到這個發生,除了我想要的是什麼在這裏右邊的列以顯示在URL欄中。相反,我得到: example2.com/special/ => example1.com/page.php?q=special

這對我來說並不理想。

任何幫助表示感謝,謝謝!

回答

1

看看這個你想要做什麼:

RewriteEngine On 

RewriteCond %{REQUEST_URI} !^/page\.php 
RewriteCond %{HTTP_HOST}%{REQUEST_URI} =example1.com/special/ [OR] 
RewriteCond %{HTTP_HOST}%{REQUEST_URI} =example2.com/ 
RewriteRule ^.*$ http://example2.com/special/ [R=301,L] 

RewriteCond %{REQUEST_URI} !^/page\.php 
RewriteCond %{HTTP_HOST} =example2.com 
RewriteCond %{REQUEST_URI} !=/special/ 
RewriteRule ^.*$ http://example1.com%{REQUEST_URI} [R=301,L] 

RewriteRule ^([A-Za-z0-9-]+)/$ page.php?q=$1 
+0

感謝您的回答,但沒有奏效。它似乎是在第二個塊中的第二個RewriteCond不正確捕捉/特殊/。 此外,它仍然解決了網址欄中的URL到http://example1.com/page.php?q=special – Tom 2010-07-20 06:02:56

+0

是的,抱歉。對我而言,進行小的監督。看看編輯後的版本是否更好。 – 2010-07-20 06:08:47

+0

example2.com/special/仍然是解決example1.com/page.php?q=special這是奇怪的。這對我來說沒有意義 - 你的代碼是完全正確的,幾乎和我已經摸索過的一樣。 – Tom 2010-07-20 06:15:23