2017-03-02 73 views
1

我有一組使用mod_vhost_alias的apache(2.4.25)站點,因此一個虛擬主機服務多個子域。我可以以某種方式選擇.htaccess中的環境變量嗎?

我希望能夠設置一個環境變量,說

<VirtualHost _default_:443>` 
ServerNameAlias *.whatever-it-is.com 
SetEnv HOME_URL https://www.whatever-it-is.com/ 
# etc 

然後在我的各種網站.htaccess文件拿起變量。因此,網站可能允許訪問子文件夾或特定文件,並將所有內容重新導回到主網站。

php_flag engine off 
RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/? 
RewriteCond %{REQUEST_URI} !^/myapp[/]? 
RewriteCond %{REQUEST_URI} !^favicon.ico 
RewriteRule (.*) %{HOME_URL} [R=301,L] 
#     ^--- not working, how would you do it? 

然後在我需要所有站點改變HOME_URL的情況下,我可以將其應用於虛擬主機和每個子域數十家網站將它撿起來。

*也試過

RewriteRule (.*) %{ENV:HOME_URL} [R=301,L] 

http://httpd.apache.org/docs/2.0/env.html 的%{ENV:變量}的TestString中的RewriteCond的形式允許的mod_rewrite的重寫引擎作出對環境變量的條件......

+0

'重寫規則(。*)%{ENV:HOME_URL} [R = 301,L]'? – Cyclonecode

+0

也試過'RewriteRule(。*)%{ENV:HOME_URL} [R,L]',按照http://stackoverflow.com/a/7749784/1238884 - 仍然無法正常工作。結束於一個重定向循環,好像環境變量沒有被設置(這是,因爲我可以從php中看到它) – frumbert

回答

1

使用SetEnvIf到設置您的環境變量,以便稍後在.htaccess中可用於mod_rewrite

裏面VirtualHost配置有這樣的:

SetEnvIf Host^HOME_URL=https://www.whatever-it-is.com/ 

然後裏面的.htaccess有一個簡單的規則:

RewriteEngine On 

RewriteRule .* %{ENV:HOME_URL} [R=301,L] 

確保測試這種變化之前,清除瀏覽器緩存。

+2

好吧,它看起來不像我已經嘗試過,但現在這是爲我的子域名工作 – frumbert

相關問題