【问题标题】:.htacces Redirect to different based on subdomain.htaccess 根据子域重定向到不同的
【发布时间】:2012-07-25 10:21:01
【问题描述】:

我有一个问题。

我正在尝试在我的主机上使用 1 个域设置 TEST、CERT 和 PROD 网络空间。
问题是我已经在我的网页中使用子域,因此无法配置 DNS 通配符记录。

网址在 PROD 上如下所示:
company1.domain.com company2.domain.com

两者都指向主机上的同一目录。

我想要实现的是:
company1.domain.com -> 指向目录1
company1.test.domain.com -> 指向目录2
company1.cert.domain.com -> 指向目录3

“company1”必须是通配符。 此外,我不希望看到 URL 中显示的目录。

有人知道如何实现这一点吗?
我应该删除现有的 DNS 通配符记录吗?

【问题讨论】:

    标签: .htaccess wildcard subdomain


    【解决方案1】:

    理想情况下,您应该将这些子域中的每一个都制作成一个单独的虚拟主机,并将每个虚拟主机指向它自己的目录。一些托管公司甚至允许您将子域分配给单独的目录。

    但是如果由于某种原因,它们都需要指向同一个文档根目录,请尝试将这些规则添加到文档根目录中的 htaccess 文件中:

    RewriteEngine On
    
    # for company1
    RewriteCond %{HTTP_HOST} company1.domain.com [NC]
    RewriteCond %{REQUEST_URI} !^/directory1
    RewriteRule ^(.*)$ /directory1/$1 [L]
    
    # for company1.test
    RewriteCond %{HTTP_HOST} company1.test.domain.com [NC]
    RewriteCond %{REQUEST_URI} !^/directory2
    RewriteRule ^(.*)$ /directory2/$1 [L]
    
    # for company1.cert
    RewriteCond %{HTTP_HOST} company1.cert.domain.com [NC]
    RewriteCond %{REQUEST_URI} !^/directory3
    RewriteRule ^(.*)$ /directory3/$1 [L]
    

    【讨论】:

    • 嗨谢谢,我会试试这个。如果我想用通配符替换 company1 怎么办?会变成 company1 => ^(.*)
    • @Adamski 如果您不在乎 company1 是什么,只需将其删除,它将无法匹配
    猜你喜欢
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-24
    • 2017-06-26
    • 1970-01-01
    • 2012-02-22
    • 2016-11-01
    相关资源
    最近更新 更多