Mod rewrite hostgator:到URL的通配符子域映射
在过去的3个小时里,我一直在hostgator共享托管服务器上努力解决这个问题。这是最简单的问题 这就是我想要实现的映射: subdomain.domain.com-->www.domain.com/test.php?用户=子域 但由于某些原因,每当我进入“subdomain.domain.com”时,重定向不会发生,甚至URL在我的浏览器中也不会更改。我看到加载页面上列出了test.php文件(因为服务器上只有.htaccess和test.php文件) 这是.htacess代码Mod rewrite hostgator:到URL的通配符子域映射,mod-rewrite,Mod Rewrite,在过去的3个小时里,我一直在hostgator共享托管服务器上努力解决这个问题。这是最简单的问题 这就是我想要实现的映射: subdomain.domain.com-->www.domain.com/test.php?用户=子域 但由于某些原因,每当我进入“subdomain.domain.com”时,重定向不会发生,甚至URL在我的浏览器中也不会更改。我看到加载页面上列出了test.php文件(因为服务器上只有.htaccess和test.php文件) 这是.htacess代码 &l
<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>
重新启动发动机
重写基/
重写cond%{HTTP_HOST}^www.[NC]
重写cond%{HTTP_HOST}^([a-z0-9]+).domain.com(.*)$[NC]
重写规则^(.*)$http://www.domain.com/test.php?user=$1$2[P,L]
重写cond%{HTTP_HOST}^www.[NC]
重写cond%{HTTP_HOST}^([a-z0-9]+).domain.com(.*)$[NC]
重写规则^(.*)$http://www.domain.com/test.php?user=$1$2[R=301,L]
这是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\u html/.htaccess中看到了这一点。如果问题是“它不工作”,则是相同的问题。在请求domain.com url时,如果没有index.php文件,我发现这是常见的服务器错误。根据你的建议,我成功了。谢谢