我一直在努力完成这几个小时,因为某些原因它不想工作。
我想要的只是username.domain.com,在内部转到domain.com/users/username
我设置了我的dns,通配符子域指向public_html / wild文件夹,我在其中放置了一个index.html文件,似乎一切正常。
问题是当我使用这个.htaccess文件时:
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+)\.domain\.com$ [NC]
RewriteRule !^index\.php($|/) index.php/users/%2%{REQUEST_URI} [PT,L]
它显示404页面未找到错误。我检查了日志,它说它仍然在/ wild文件夹中查找,但是我的脚本在public_html文件夹中是一级的。
如何解决此问题? 谢谢!
答案 0 :(得分:0)
您说您已将通配符子域指向public_html/wild
,这意味着当有人请求http://user.domain.com/
/ 请求映射到public_html/wild
时。这意味着对通配符子域的请求将永远无法映射到父目录public_html
中的任何内容(这就是为什么它被称为文档 root )。
您可以做的一件事是将通配符子域的文档根目录指向与主域index.php
所在的位置相同的位置。但是如果您从主域获得了不希望混入子域的内容,反之亦然,您可以尝试使用P
标志,该标志使用mod_proxy并创建反向代理:
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+)\.domain\.com$ [NC]
RewriteRule !^index\.php($|/) http://www.domain.com/index.php/users/%2%{REQUEST_URI} [P,L]
答案 1 :(得分:0)
这是最终奏效的内容:
RewriteCond %{HTTP_HOST} ^([^.]+)\.myserver\.com$ [NC]
RewriteRule (?!^m/$)^.*$ http://myserver.com/m/sites/%1%{REQUEST_URI} [NC,L,P]