修改两个站点的htaccess文件

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文件以允许两个站点?

在此先感谢您的帮助!我显然是这个东西的新手.

reg*_*ero 6

所以我们会尝试清理东西:-)

避免使用.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不理解所请求站点的名称,它将提供此默认值(因此您可以使用特定的虚拟主机顶部处理这些案件).

  • 您可能需要添加:在 Apache 2.4 上“要求所有已授予” (2认同)