Arv*_*rvy 1 apache virtualhost operator-precedence
Apache忽略了我的主要VirtualHost条目的ServerName和ServerAlias.
我的情景:
- main domain is "one.com" (just an example)
- secondary domains are several, pointing to the same IP of "one.com", but they need
to be in a different VirtualHost entry, so I can redirect to "one.com" using PHP
(I want to log redirects).
Run Code Online (Sandbox Code Playgroud)
所以我做了:
<VirtualHost 208.1.2.3:80>
DocumentRoot /sites/redir
ErrorLog logs/redir-error_log
CustomLog logs/redir-access_log common
ErrorDocument 404 /index.php
</VirtualHost>
<VirtualHost 208.1.2.3:80>
DocumentRoot /sites/main
ServerName one.com
ServerAlias www.one.com
DirectoryIndex index.html index.php
ErrorLog logs/main-error_log
CustomLog logs/main-access_log common
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
由于优先级,one.com的任何域都将使用第一个条目,即没有ServerName或ServerAlias.
问题:所有请求都转到第一个条目,包括one.com和www.one.com导致无限循环,因为我的PHP脚本重定向到one.com.如果我反转块,所有请求都转到"主"条目...
我需要的是one.com和www.one.com在/ sites/main中运行,而任何其他域都转到/ sites/redir以重定向到"one.com"条目.
有任何想法吗?
谢谢.Arvy
解决了.
问题是第一个"全局"条目NEEDS ServerName参数.你不需要通知一个有效的条目,只需要一些东西,比如"ServerName mask.one.com".这样,将第一个条目设置为"通用"条目,将第二个条目设置为有效域,在我的例子中为one.com.任何未列出的域都将使用优先级,因此,将像"mask.one.com"一样运行.
<VirtualHost 208.1.2.3:80>
DocumentRoot /sites/redir
ServerName redir.one.com
ErrorLog logs/redir-error_log
CustomLog logs/redir-access_log common
ErrorDocument 404 /index.php
</VirtualHost>
<VirtualHost 208.1.2.3:80>
DocumentRoot /sites/main
ServerName one.com
ServerAlias www.one.com
DirectoryIndex index.html index.php
ErrorLog logs/main-error_log
CustomLog logs/main-access_log common
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7804 次 |
| 最近记录: |