Ran*_*ndy 1 apache .htaccess apache2
我的网站主机将我的"主"域名指向根www文件夹.该站点的Web文件位于"www/app/webroot"文件夹中.我目前在htaccess文件中使用以下内容启动并运行该站点:
RewriteBase /
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
Run Code Online (Sandbox Code Playgroud)
我正在尝试为同一个站点启动一个开发站点.我在www文件夹中创建了一个名为"dev"的文件夹.因此,此文件夹的Web文件位于:"www/dev/app/webroot"我有一个指向dev文件夹的子域.当我在dev文件夹中使用与上面相同的htaccess时,它不起作用,因为(我相信)它继承了根www文件夹中的设置.当页面加载时,它只是空白.如何设置我的htaccess文件以允许两个站点?
在此先感谢您的帮助!我显然是这个东西的新手.
所以我们会尝试清理东西:-)
避免使用.htaccess.目录/ foo/bar中.htaccess中的所有设置都可以在apache配置中设置为目录设置(如果您在apache conf上提供有限访问权限,则成功很有用,如果您拥有服务器则不使用它).
<Directory /foo/bar>(...)</Directory>
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用基于命名的虚拟主机访问您的站点.确认您有此选项:
NameVirtualHost *:80
Run Code Online (Sandbox Code Playgroud)
如果你有好的东西可以开始.这将是您的第一个应用程序的虚拟主机:
<VirtualHost *:80>
ServerName app
ServerAlias www.app.somwhere.com
ServerAlias app.somwhere.com
DocumentRoot /www/app/webroot
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /www/app/webroot>
Options Indexes FollowSymLinks
# this prevent.htaccess reading, remove if you want .htaccess
AllowOverride None
# allow web access
Order allow,deny
allow from all
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
大多数apache设置都可以在这里定义.仅适用于您的第一个应用.Apache将为网站名称"app"或"www.app.somwhere.com"或"app.somwhere.com"的所有请求提供此配置.您可以定义许多别名(ServerAlias).,并且只能定义一个名称(ServerName).
然后,如果您进入浏览器并键入http:// app /您的浏览器将无法找到服务器,请将其设置在/ etc/hosts中.这是每个人想要访问你的应用程序应该在hosts文件中,直到你得到一个真正的DNS(假设你的第一个应用程序是app.somwhere.com,第二个foo.somwhere.com和92.128.52.226是你的外部IP) :
127.0.0.1 app.somwhere.com app foo foo.somewhere.com
92.128.52.226 app.somwhere.com app foo foo.somewhere.com
Run Code Online (Sandbox Code Playgroud)
现在让我们为您的第二个应用添加另一个虚拟主机:
<VirtualHost *:80>
ServerName foo
ServerAlias www.foo.somwhere.com
ServerAlias foo.somwhere.com
DocumentRoot /www/foo/webroot
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /www/foo/webroot>
Options Indexes FollowSymLinks
# this prevent.htaccess reading, remove if you want .htaccess
AllowOverride None
# allow web access
Order allow,deny
allow from all
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
等等.别忘了重启你的apache.没有重写规则.nice virtualhosts是一个很好的配置的第一步,你将能够定义每个名称使用的规则,目录或位置特定的东西.甚至可以使用php_value为每个虚拟主机设置php配置,而不是php.ini上的全局共享.
类型
apache2 -S
Run Code Online (Sandbox Code Playgroud)
要获取虚拟主机列表,您会看到第一个是"默认"主机,如果apache不理解所请求站点的名称,它将提供此默认值(因此您可以使用特定的虚拟主机顶部处理这些案件).