我的网站托管服务商将我的“主要”域名指向根www文件夹。该站点的Web文件位于“www / app / webroot”文件夹中。我目前在htaccess文件中使用以下内容启动并运行该站点:
RewriteBase /
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
我正在尝试为同一个网站启动一个开发网站。我在www文件夹中创建了一个名为“dev”的文件夹。因此,此文件夹的Web文件位于:“www / dev / app / webroot”我有一个指向dev文件夹的子域。当我在dev文件夹中使用与上面相同的htaccess时,它不起作用,因为(我相信)它继承了根www文件夹中的设置。当页面加载时,它只是空白。如何设置我的htaccess文件以允许两个站点?
提前感谢您的帮助!我显然是这个东西的新手。
答案 0 :(得分:6)
所以我们会尝试清理这些东西: - )
避免使用.htaccess。在目录/富/酒吧的.htaccess所有设置都可以在Apache的配置(.haccess是有用的,如果你提供的Apache的conf有限,如果你自己的服务器不使用它)设置为一个目录设置。
<Directory /foo/bar>(...)</Directory>
然后,您可以使用基于命名的虚拟主机访问您的站点。确认您有此选项:
NameVirtualHost *:80
如果你有好的东西可以开始。 这将是您的第一个应用程序的虚拟主机:
<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>
大多数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
现在让我们为你的第二个应用添加另一个虚拟主机:
<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>
等 别忘了重启你的apache。没有重写规则。 nice virtualhosts是一个很好的配置的第一步,你将能够定义每个名称使用的规则,目录或位置特定的东西。甚至可以使用php_value为每个虚拟主机设置php配置,而不是在php.ini上设置全局共享。
输入
apache2 -S
要获取虚拟主机列表,您会看到第一个是默认主机,如果apache不理解所请求站点的名称,它将提供此默认值(因此您可以广告顶部的特定虚拟主机来处理这些情况。)
答案 1 :(得分:0)
尝试将dev /添加到第3行和第4行中的路径到您的开发.htaccess。
答案 2 :(得分:0)
也许你应该删除dev文件夹中.htaccess中的“RewriteBase /”行?