【问题标题】:htaccess subdomains?htaccess 子域?
【发布时间】:2012-08-20 10:03:10
【问题描述】:

我想知道是否可以仅使用 htaccess 代码创建子域, (无需在主机控制面板中设置)

我有一个名为“mobile”的文件夹, 它的位置是这样的:http://www.domain.com/mobile

我希望能够输入http://mobile.domain.com并查看手机文件夹, 这是否可能仅通过在 htaccess 中编写一些代码来实现? 如果是这样,我该怎么做?

谢谢

【问题讨论】:

    标签: .htaccess subdomain


    【解决方案1】:

    只要将其配置为处理对 *.domain.com 域的所有请求,您就可以执行此操作,然后只需确保将 mobile.domain.com 的 DNS CNAME 设置为 www.domain.com

    如果你知道你想要什么子域,你可以像这样枚举它们(将这些规则放在文档根目录的 htaccess 文件中):

    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^(www\.) [NC]
    RewriteCond %{HTTP_HOST} ^mobile\.domain\.com$ [NC]
    RewriteCond %{REQUEST_URI} !^/mobile/
    RewriteCond %{DOCUMENT_ROOT}/mobile%{REQUEST_URI} -f [OR]
    RewriteCond %{DOCUMENT_ROOT}/mobile%{REQUEST_URI} -d
    RewriteRule ^(.*)$ /mobile/$1 [L]
    

    否则,如果你想随意这样做,它会变得有点复杂:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^(www\.) [NC]
    RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com$ [NC]
    RewriteCond %1:%{REQUEST_URI} !^([^:]+):/\1/
    RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com$ [NC]
    RewriteCond %{DOCUMENT_ROOT}/%1%{REQUEST_URI} -f [OR]
    RewriteCond %{DOCUMENT_ROOT}/%1%{REQUEST_URI} -d
    RewriteRule ^(.*)$ /%1/$1 [L]
    

    【讨论】:

      【解决方案2】:

      取决于您的域的配置。

      如果您使用通配符 ServerAlias 设置它们,如下所示:

      ServerName example.com
      ServerAlias *.example.com
      
      DocumentRoot /var/www/example.com/
      

      请求将进入文件夹,.htaccess 将被评估,使您能够使用 mod_rewrite。但是,如果您不指定 ServerAlias 指令,则请求将永远不会到达该文件夹,因此您将无法对其进行任何操作。

      【讨论】:

        猜你喜欢
        • 2011-09-21
        • 1970-01-01
        • 2014-07-25
        • 1970-01-01
        • 1970-01-01
        • 2014-03-08
        • 2013-08-04
        相关资源
        最近更新 更多