基本上我想*.domain.com
拉起domain.com/*/
*.domain.com
(不redirect)。
我进入了cPanel的子域部分,并为这个域设置了一个通配符。 这似乎是正确的解决,即* .domain.com正在提出domain.com。
我现在在public_html目录中创build了一个htaccess文件,其中包含:
Options +FollowSymLinks Options +Indexes RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} !www.domain.com$ [NC] RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).domain.com [NC] RewriteRule (.*) %2/$1 [L]
我得到的错误是'500内部服务器错误',有什么想法?
参考这个StackOverflow问题:“ 使用.htaccess随时创build子域 ”
查看问题的答案,特别是这个链接 ,其中有一些应该在你的情况下工作的例子。
Webmasterworld发布的地址有几个问题,包括子域recursion,因为.htaccess也会影响您的主www根目录中的子目录。
最终的代码是这样的:
RewriteBase / #### URL Rewrite Handler for Subdomains (by Randall Krause) #### RewriteCond %{ENV:REDIRECT_SUBDOMAIN} ="" RewriteCond %{HTTP_HOST} ^([a-z0-9][-a-z0-9]+)\.mydomain\.org\.?(:80)?$ [NC] RewriteCond %{DOCUMENT_ROOT}/subdomains/%1 -d RewriteRule ^(.*) subdomains/%1/$1 [E=SUBDOMAIN:%1,L] RewriteRule ^ - [E=SUBDOMAIN:%{ENV:REDIRECT_SUBDOMAIN},L]
如果你想看看你上面的代码错误(什么是创build500错误),检查你的error_log。 我的猜测是这是造成recursion。
我会使用mod_vhost_alias 。 例如:
VirtualDocumentRoot /usr/local/apache/vhosts/%-3+
将请求映射如下:
http://dom1.example.com/ => /usr/local/apache/vhosts/dom1/ http://foo.dom2.example.com/ => /usr/local/apache/vhosts/foo.dom2/ etc...
您当然可以调整映射的工作方式。 有关所有详细信息和更多示例,请参阅文档。