重定向到重写的URL问题

时间:2013-09-26 18:14:44

标签: regex apache .htaccess mod-rewrite

我在尝试重定向到重写的网址时遇到问题。 我改写自:

www.testdomain.com/index.php?rt=..&id=..

到:

www.testdomain.com/{rt}/{id}

并尝试从旧(1)重定向到(2)。

这里,我的.htaccess文件:

RewriteRule ^(.*)/([0-9]+)/?$ index.php?rt=$1&id=$2 [L]

RewriteCond %{REQUEST_URI} ^/index.php
RewriteCond %{QUERY_STRING} ^rt=(.*)&id=(.*)$
RewriteRule ^(.*)$ http://www.localdomain.com/%1/%2? [R=301,L]

这是我的问题:当我在浏览器中运行时,它会抛出有关重定向循环的错误。但我不知道如何解决这个错误。

1 个答案:

答案 0 :(得分:1)

用以下代码替换您的代码:

RewriteEngine On

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php\?rt=([^\s&]+)&id=([^\s&]+) [NC]
RewriteRule ^ /%1/%2? [R=301,L,NE]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([0-9]+)/?$ /index.php?rt=$1&id=$2 [L,QSA]