0

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

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

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

谢谢

4

2 回答 2

1

只要将其配置为处理对*.domain.com域的所有请求,您就可以执行此操作,然后只需确保您已将mobile.domain.com'DNS CNAME'ed 设置为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]
于 2012-08-20T10:12:37.117 回答
0

取决于您的域的配置。

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

ServerName example.com
ServerAlias *.example.com

DocumentRoot /var/www/example.com/

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

于 2012-08-20T10:06:51.243 回答