2013-04-23 20 views
0

我重寫規則在重寫規則中指定的主機使URL改變

RewriteRule (/m)?/cia16(.*) $1/cia$2?CIA=16 [QSA] 

這工作得很好,但問題是,它是運行的多個主機的環境,但它只是設法重新指向主持人。例如,這在dev.example.com的配置中,但即使您在explosion-pills.dev.example.com(具有相同的配置),重寫也會重定向到dev

我可以修復使用:

RewriteRule (/m)?/cia16(.*) http://${HTTP_HOST}$1/cia$2?CIA=16 [QSA] 

......然而,這將導致URL到這是不可取的地址欄更改。使用[L]標誌也不會做任何事情。

如何指定重寫規則以使用當前主機而不更改請求URL?

+0

你有一個在你的問題是導致重定向到dev陸續規則? – 2013-04-23 17:30:48

+0

不是我所知道的,但我對主配置文件 – 2013-04-23 17:33:51

+0

沒有太多控制。其他人有類似的問題,並且似乎使用「Passthrough」標誌修復了它。值得一試? http://www.sitepoint.com/forums/showthread.php?617120-Replicating-internal-redirect-behaviour-for-redirecting-to-external-site-in-htaccess – showdev 2013-04-23 18:00:06

回答

1

解決方法之一是在您的Apache配置中啓用mod_proxy。一旦做到這一點使用P(代理)標誌改寫這樣的:

RewriteRule (/m/)?cia16(.*) http://%{HTTP_HOST}$1/cia$2?CIA=16 [QSA,L,P] 
+0

即使使用'%{HTTP_HOST}' – 2013-04-24 15:08:26

+0

,重寫也不起作用對不起'$ {HTTP_HOST}'是一個錯字,但是您確定mod_proxy已啓用並且在您的Apache配置中工作。 – anubhava 2013-04-24 15:10:25

+0

也請讓我知道你用什麼URI來測試這個? – anubhava 2013-04-24 15:11:13