hostgator:通配符子域映射到URL
问题描述:
我一直在过去3个小时在hostgator共享主机服务器上解决了这个问题。这是最简单的问题。hostgator:通配符子域映射到URL
这是我希望发生的映射: subdomain.domain.com - > www.domain.com/test.php?user=subdomain
但出于某种原因,每当我进入“subdomain.domain .com“,重定向不会发生,甚至URL在我的浏览器中也不会改变。我看到加载页面上列出的test.php文件(因为我在服务器上的唯一文件是.htaccess和test.php)。
这是.htacess代码
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase/
<IfModule mod_proxy.c>
RewriteCond %{HTTP_HOST} !^www. [NC]
RewriteCond %{HTTP_HOST} ^([a-z0-9]+).domain.com(.*)$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/test.php?user=$1$2 [P,L]
</IfModule>
<IfModule !mod_proxy.c>
RewriteCond %{HTTP_HOST} !^www. [NC]
RewriteCond %{HTTP_HOST} ^([a-z0-9]+).domain.com(.*)$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/test.php?user=$1$2 [R=301,L]
</IfModule>
</IfModule>
,这是test.php的代码
<?php echo $_GET['user']; ?>
没有人知道这里的问题是什么?该支持对我没有帮助。我认为服务器配置有问题。
答
RewriteCond
反向引用使用百分比而不是美元符号! %1不是$ 1。
RewriteCond %{HTTP_HOST} !^www. [NC]
RewriteCond %{HTTP_HOST} ^([a-z0-9]+).domain.com(.*)$ [NC]
^%1 ^%2
RewriteRule ^(.*)$ http://www.domain.com/test.php?user=$1$2 [R=301,L]
^$1 ^^^^ oops
$1
表示从左边的正则表达式中拉出一些东西; %1表示将其从RewriteCond
中拉出。假设重写者不会因为$2
是一个悬而未决的反向引用而窒息,您可能会将整个比赛作为用户部分。
我只是试过这个,但仍然看到同样的问题。我在服务器配置拒绝的错误日志客户端中看到了这一点:/home/user/public_html/.htaccess – santosh 2012-03-09 11:01:13
如果问题是“它不起作用”,那么这也是同样的问题。它是否以完全相同的方式失败(这些更改绝对没有区别?) – Kaz 2012-03-09 22:29:35
我发现如果在请求domain.com url时没有index.php文件,这是常见的服务器错误。与您的建议我得到它的工作。谢谢。 – santosh 2012-03-10 02:43:09