1

我已经尝试完成这几个小时了,由于某种原因它不想工作。

我想要的只是 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 文件夹中的上一级。

我该如何解决这个问题?谢谢!

4

2 回答 2

0

这是最终奏效的方法:

RewriteCond %{HTTP_HOST} ^([^.]+)\.myserver\.com$ [NC]
RewriteRule (?!^m/$)^.*$ http://myserver.com/m/sites/%1%{REQUEST_URI} [NC,L,P]
于 2013-04-18T16:30:14.110 回答
0

您说您已将通配符子域指向public_html/wild,这意味着当有人请求时http://user.domain.com//请求被映射到public_html/wild。这意味着对通配符子域的请求将永远无法映射到父目录中的任何内容public_html(这就是它被称为文档目录的原因)。

您可以做的一件事是将通配符子域的文档根指向与主域相同的位置,即所在的位置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]
于 2013-04-18T07:54:56.057 回答