重定向循环问题:旧式URL到新的用户友好URL

时间:2011-08-29 20:04:50

标签: .htaccess mod-rewrite loops redirect

我正在尝试用旧的网址替换旧的网址,仅使用.htaccess

e.g。 domain.com/dir/?id=101 -> domain.com/dir/robots

应该通过用户或搜索空间从旧链接(?id=...)访问它,并使用301状态代码重定向到新链接,当然应该从新网址访问它。

我的.htaccess:

Options +FollowSymlinks
RewriteEngine on
RewriteBase /dir/

RewriteRule ^robots/?$ ?id=101 [L]

RewriteCond %{QUERY_STRING} ^id=101$
RewriteRule ^$ robots? [R=301,L]

显然它会返回重定向循环。

不幸的是我无法修改CMS引擎,因此唯一的解决方案是使用.htaccess规则执行此操作。

我已经google了很多,但没有找到任何有效的解决方案。

有什么想法吗?

谢谢!

解决

好的,一点点随机魔法,我找到了解决方案:

RewriteRule ^robots/?$ ?id=101 [L]

RewriteCond %{ENV:REDIRECT_STATUS} !=200
RewriteCond %{QUERY_STRING} ^id=101$
RewriteRule ^$ robots? [R=301,L]

重要提示:条件!=200 RewriteCond %{ENV:REDIRECT_STATUS}后无空格。有空间它不起作用。

1 个答案:

答案 0 :(得分:0)

Options +FollowSymlinks
RewriteEngine on
RewriteBase /dir/

RewriteRule ^robots/?$ ?id=101 [L]

RewriteCond %{QUERY_STRING} ^/id=101$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/dir/robots? [R=301,L]