修改两个站点的htaccess文件

时间:2011-01-04 14:44:19

标签: apache .htaccess apache2

我的网站托管服务商将我的“主要”域名指向根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文件以允许两个站点?

提前感谢您的帮助!我显然是这个东西的新手。

3 个答案:

答案 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 /”行?