【发布时间】:2011-11-23 05:47:36
【问题描述】:
我有一个服务器,我正在设置将子域重写为获取参数
所以, subdomain.example.com/blog/test 实际上会指向: example.com/index.php?website=subdomain&request=blog/test
我已使用值为 * 的 A 记录设置域,并且已将服务器设置为别名 *.example.com 到 example.com。所有这些都有效。
在我的 .htaccess 中有
RewriteCond %{HTTP_HOST} !^www. [NC]
RewriteCond %{HTTP_HOST} ^([^/\.]+).example.com(.*)$ [NC]
RewriteRule ^(.*)$ index.php?website=%1&request=%2 [L]
当我转到 subdomain.example.com/blog/test 时,这是 $_GET 的 var_dump()
array(2) { ["website"]=> string(8) "subdomain" ["request"]=> string(0) "" }
子域在网站参数中完美输入,但请求的其余部分不在请求参数中。有任何想法吗?我真的很感激帮助。提前致谢。
顺便说一句,如果我使用
RewriteRule ^(.*)$ index.php?website=%1&request=$1 [L]
然后我在请求参数中得到index.php。如果这告诉你一些额外的事情。
修正
根据约翰的建议,我尝试了以下方法
RewriteCond %{HTTP_HOST} !^www. [NC]
RewriteCond %{HTTP_HOST} ^([^/\.]+).wescms.com(.*) [NC]
RewriteRule ^(.*)$ index.php?website=%1&request=%{REQUEST_URI} [NC,L]
如果您访问 subdomain.example.com/blog/test,REQUEST_URI 会返回 index.php 我对 $_SERVER 变量做了一个 var_dump(),在 REQUEST_URI 中它显示 /blog/test,但它没有通过 RewriteRule。
如果我在重写规则中使用 THE_REQUEST 而不是 REQUEST_URI,我会得到我需要的内容以及一些额外的位,但我希望能更多地了解为什么 REQUEST_URI 不像上一个示例那样工作。谢谢。
【问题讨论】:
标签: apache mod-rewrite url-rewriting subdomain