提问者:小点点

.htaccess重写规则导致无限循环


我想要我的。htaccess文件,如果任何作为子域条目的通配符出现在浏览器上,则重定向到某个页面。i、 我想要

山姆,xyz。通用域名格式

重定向到

山姆,xyz。com/view。php?id=sam

我使用以下重写规则重定向。

重新启动引擎

重写cond%{HTTP_HOST}^www.xyz。com[NC]

重写cond%{HTTP_HOST}^([^.])。xyz。通用域名格式

重写 ^(.*)$ / view.php?id=%1[L, R]

我面临的问题是,它不转移到新的领域保持查询字符串,而是生成一个无尽的循环

山姆,xyz。通用域名格式

重定向到

http://sam.xyz.com/view.php?id=sam

但如果没有无休止的循环,就不会移动到上面的url。请帮帮我。提前谢谢,


共2个答案

匿名用户

您应该为重定向添加一个条件,以防止重定向循环:

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]

匿名用户

您正在重定向到:prefix.domain.tld/view.php?id=prefix

确保url不包含:id=前缀。

这个解决方案防止,有人调用的网址: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)