修改两个站点的htaccess文件

问题描述 投票:0回答:4

我的网络主机将我的“主”域名指向根 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 文件以允许两个站点?

预先感谢您的帮助!我显然是这方面的新手。

apache .htaccess apache2
4个回答
9
投票

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

避免使用.htaccess。目录 /foo/bar 中 .htaccess 中的所有设置都可以在 apache 配置中设置为目录设置(如果您在 apache conf 上提供有限访问,则 .haccess 很有用,如果您拥有服务器,则不要使用它)。

<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 中进行设置。这是每个想要访问您的应用程序的人都应该在主机文件中拥有的内容,直到您获得真正的 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。没有重写规则。良好的虚拟主机是良好配置的第一步,您将能够根据所使用的名称定义规则、目录或位置特定的内容。甚至可以使用 php_value 设置每个虚拟主机的 php 配置,而不是在 php.ini 上设置全局共享配置。

类型

apache2 -S

要获取虚拟主机列表,您会看到第一个是“默认”主机,如果 apache 不理解所请求站点的名称,它将提供此默认主机(因此您可以添加特定的虚拟主机)在顶部处理这些情况)。


0
投票

尝试将 dev/ 添加到 dev .htaccess 的第 3 行和第 4 行中的路径。


0
投票

也许您应该删除 dev 文件夹中 .htaccess 中的“RewriteBase /”行?


0
投票

我还设法使用 Xammp 托管多个项目文件夹。

我首先关注 YouTube 视频。观看视频后,我找不到视频中引用的主机文件,因此我查看了 stackoverflow,其中 Maytham Fahmi 对“如何在 XAMPP (Windows) 上设置 Apache 虚拟主机 [已关闭]”的回答

我使用以下来源来添加虚拟主机:

© www.soinside.com 2019 - 2024. All rights reserved.