【问题标题】:Redirecting both third level and second level domains to directories on localhost将第三级和第二级域重定向到 localhost 上的目录
【发布时间】:2011-11-04 03:09:36
【问题描述】:

在 Acrylic DNS 代理的帮助下,设置我的 localhost,使任何具有顶级域“l”(example.l)的地址都被重定向到 localhost。但我想打开基于二级域的特定文件夹(example.l -> localhost/example) 我认为解决方案可能在 htaccess 文件中,该文件位于根目录(在我的情况下为 C:\wamp\www\)。

我找到了一些子域的代码并对其进行了一些更改,以便在我的情况下可以使用:

RewriteEngine on 
RewriteCond %{HTTP_HOST} !^www\.l
RewriteCond %{HTTP_HOST} ^([^.]+)\.l
RewriteRule ^$ /$1 [L]

它适用于二级域但不是透明的(example.l 变为 example.l/example),并且忽略了三级域(但我认为可以使用目标目录中的另一个 htaccess 文件来修复)。 我是正则表达式的菜鸟,所以我不能让它正常工作。

有什么想法吗?

顺便说一句,如果我将域添加到 vshost 文件中,它可以正常工作,但是避免对每个域都这样做是我想要完成的重点......

【问题讨论】:

    标签: regex .htaccess dns localhost


    【解决方案1】:

    你想做的是使用Named Virtual Hosts,而不是mod_rewrite

    这是一个稍微复杂的问题,因为它取决于您的系统配置方式、操作系统以及您运行的 Apache 版本。

    然而,一般来说,它基本上需要在您的http.conf 中启用命名虚拟主机,然后为每个主机添加指向不同目录的特定配置,如下所示:

    # Enabled Named Virtual Hosts
    NameVirtualHost *:80
    
    # Set up one host
    <VirtualHost *:80>
        ServerName example.l
        ServerAlias *.example.l
        DocumentRoot "C:/wamp/www/example"
    </VirtualHost>
    
    # Add another
    <VirtualHost *:80>
        ServerName other.l
        DocumentRoot "C:/wamp/www/other"
    </VirtualHost>
    

    在生产系统中,例如在 Linux 操作系统上运行的系统,您通常会为每个域维护一个单独的 .conf 以使其更容易。

    编辑:我不是 Windows 用户,所以我不是 100% 使用正确的目录分隔符格式。我将其更改为与我在网上找到的示例相匹配。

    【讨论】:

    • 感谢您的回答,但正如我所写的那样 - 我按照您的建议进行了操作,它确实有效,但这正是我想要避免的 - 需要在 conf 文件中设置每个新域。 ..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 2018-06-04
    • 2023-01-07
    相关资源
    最近更新 更多