过去3小时,我一直在hostgator共享托管服务器上遇到此问题。这是最简单的问题。
这是我想要发生的映射: 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']; ?>
有谁知道这里的问题是什么?支持对我没有帮助。我认为服务器配置有问题。
答案 0 :(得分:0)
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
是悬挂的反向引用这一事实。