2013-06-27 56 views
2

我希望我的.htaccess文件重定向到一些网页,如果作为一个子进入任何通配符点击浏览器上。即我想的.htaccess重写规则会导致死循环

SAM .xyz.com

要重定向到

sam.xyz.com/view.php?id= SAM

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

RewriteEngine叙述在

的RewriteCond%{HTTP_HOST} ^!www.xyz.com [NC]

的RewriteCond%{HTTP_HOST} ^([^。] +)。xyz.com

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

问题我面临的是,它不会移动到新的域保持查询字符串代替它产生的环形循环

SAM .xyz.com

重定向到

HTTP:// SAM .xyz.com/view.php ID = SAM

但犯规移动上面的网址没有死循环。 请帮助我。 由于提前,

回答

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] 
+0

页面concatination解决了,但域失去了它的查询并导致无限循环。我做错了什么? – salmanpervaiz

+0

我已经添加了相同的上述规则仍然是相同的循环 – salmanpervaiz

+0

oups,忘了斜线,现在试试吧 –

1

您将会重定向到:prefix.domain。 ?TLD/view.php的id =前缀

确保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客场不重定向访问者到URL(何种交往?id =%1)

+0

即使在删除R后,仍然在末尾显示查询字符串 – salmanpervaiz

+0

这有助于我如何隐藏来自url的查询变量? – salmanpervaiz