我正在尝试用旧的网址替换旧的网址,仅使用.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}
后无空格。有空间它不起作用。
答案 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]