我有一个可以访问的应用程序via 1.2.3.4/myapp
。该应用程序安装在 中/var/www/myapp
。我设置了一个指向 的子域 ( apps.mydomain.com
) 。如果我输入,1.2.3.4
我希望服务器指向,我该怎么做?我有在本地创建虚拟主机(很多)的经验,但我迷茫了,因为它现在在生产中,而且有点不同。这是我的虚拟主机配置:var/www/myapp
apps.mydomain.com/myapp
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName apps.mydomain.com/myapp
DocumentRoot /var/www/myapp/public
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride All
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
知道为什么我仍然看到文件而不是指向文档根目录吗?
以防有人问,该应用程序基于 Laravel 4 框架。现在情况真的很糟糕,因为任何人都可以通过浏览器访问文件。
答案1
尝试一下这个。
ServerAdmin webmaster@localhost ServerName apps.mydomain.com
DocumentRoot /var/www
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
Alias /myapp "/var/www/myapp/public/"
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride All
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
如果您不想让其他人访问 apps.mydomain.com,请在 /var/www 中添加 index.php,并重定向至 apps.mydomain.com/myapp。
<?php
header("Location: /myapp");
?>
我认为它会满足你的需要。
答案2
我认为将其添加到 apps.mydomain.com 的虚拟主机应该可行:
Alias /myapp "/var/www/myapp/public/"
这应该将 apps.mydomain.com/myapp 指向该文件夹
如果有效,您可以删除现有的虚拟主机apps.mydomain.com/myapp
但我不是服务器管理员,我可能会错。等着吧 :)