我正在安装一个 symfony 项目/var/www/
我在这里存储了一个特殊的登陆页面/var/www/web/landingpage
我希望我的访问者能够http://www.mydomain.com
登陆我的登陆页面,并且能够http://www.mydomain.com/foo
登陆我的 symfony 项目。
我创建了 2 个不同的虚拟主机ServerPath
,登陆页面可以运行,但 symfony 项目却不行。
这是我的配置:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName www.mydomain.com
ServerPath /
DocumentRoot /var/www/web/landingpage
ErrorLog ${APACHE_LOG_DIR}/mydomain.com.error.log
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName www.mydomain.com
ServerAlias mydomain.com sf.mydomain.com
ServerPath /sf/
DocumentRoot /var/www/web
DirectoryIndex frontend.php
<Directory /var/www/web>
Order allow,deny
Allow from all
AllowOverride none
<IfModule mod_rewrite.c>
RewriteEngine On
# we check if the .html version is here (caching)
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
# no, so we redirect to our front web controller
RewriteRule ^(.*)$ frontend.php [QSA,L]
</IfModule>
</Directory>
Alias /sf /var/www/lib/vendor/symfony/data/web/sf
ErrorLog ${APACHE_LOG_DIR}/mydomain.sf.error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/mydomain.sf.access.log combined
</VirtualHost>
注意:我的第二个 Virtualhost 没有第一个,也没有ServerPath
指令,运行正常
答案1
您不能拥有两个具有相同主机名的虚拟主机条目。这根本行不通。
您可以执行以下操作:
更改第二个虚拟主机为
ServerName sf.domain.com
将第二个虚拟主机中的其他所有内容保留原样。
在您的第一个虚拟主机中,添加以下行:
RewriteEngine On
RewriteRule ^/foo$ http://sf.domain.com [L,R]
然后,当任何人访问 www.mydomain.com/foo 时,他们将被重定向到第二个虚拟主机 sf.domain.com。