您好如何通过htaccess将某个子域指向某个文件夹。
我用这个来指出,它有效,但我不能让它适用于其他子域..
RewriteCond %{HTTP_HOST} !^www\.example.org
RewriteCond %{HTTP_HOST} some1\.example.org
RewriteRule ^(.*)$ /some1_folder/index.php/$1
RewriteRule ^some1$ /some1_folder/index.php/$1
http://some1.example.org/Content => http://example.org/some1/index.php/Content
如果我成功:
RewriteCond %{HTTP_HOST} !^www\.example.org
RewriteCond %{HTTP_HOST} some1\.example.org
RewriteRule ^(.*)$ /some1_folder/index.php/$1
RewriteRule ^some1$ /some1_folder/index.php/$1
RewriteCond %{HTTP_HOST} !^www\.example.org
RewriteCond %{HTTP_HOST} some2\.example.org
RewriteRule ^(.*)$ /some2_folder/index.php/$1
RewriteRule ^some2$ /some2_folder/index.php/$1
我收到500内部错误。
另外,我如何将所有不存在的域指向某个文件夹(foo.example.org => www.example.org)。谢谢。
答案 0 :(得分:6)
使用RewriteRule中的%1
为所有子域制定一套规则,以便从之前的RewriteCond中获取括号内的值。
RewriteCond %{HTTP_HOST} !^www\.example\.org
RewriteCond %{HTTP_HOST} ^(.*)\.example\.org
RewriteRule ^(.*)$ http://www.example.org/%1/index.php/$1
要将所有不存在的子域重定向到域,请在包含ServerAlias *
的虚拟主机配置文件末尾创建一个catch-all VirtualHost块以匹配任何未定义的域,并将所有请求转发到的RewriteRule您希望默认的域名。