如果任何通配符作为子域条目点击浏览器,我希望我的.htaccess文件重定向到某个页面。即我想要
SAM .xyz.com
重定向到
sam.xyz.com/view.php?id=的 SAM
我正在使用以下重写规则进行重定向。
RewriteEngine On
RewriteCond%{HTTP_HOST}!^ www.xyz.com [NC]
RewriteCond%{HTTP_HOST} ^([^。] +)。xyz.com
RewriteRule ^(。*)$ /view.php?id =%1 [L,R]
我面临的问题是它没有转移到新域保持查询字符串而是生成无限循环
SAM .xyz.com
重定向到
的http:// SAM .xyz.com / view.php ID = SAM
但是没有无限循环就不会移动到url上面。 请帮助我。 提前谢谢,
答案 0 :(得分:3)
您应该添加重定向条件以防止重定向循环:
RewriteCond %{REQUEST_URI} !^/view\.php
整个代码将是:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.xyz.com [NC]
RewriteCond %{HTTP_HOST} ^([^.]+).xyz.com
RewriteCond %{REQUEST_URI} !^/view\.php
RewriteRule ^(.*)$ /view.php?id=%1 [L,R]
答案 1 :(得分:1)
您正在重定向到:prefix.domain.tld / view.php?id = prefix
确保网址不包含:id = prefix。
此解决方案可以防止有人打电话给网址:aaa.example.com/view.php?id = bbb
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.xyz.com [NC]
RewriteCond %{HTTP_HOST} ^([^.]+).xyz.com
RewriteCond %1::%{QUERY_STRING} !^([^:]+)::.*id=\1
RewriteRule ^ /view.php?id=%1 [L,R]
注意:重写规则中的(。*)已过时。
离开R,不要将访问者重定向到网址(/view.php?id=%1)