重定向301中的重定向过多

时间:2012-08-17 15:11:43

标签: apache redirect

我想将旧的ulr重定向301到新的URL。

旧网址:/php/zend-framework/captcha-codigo-anti-spam-zend-framework

新网址:http://www.demo31.com/blog/php/zend-framework/captcha-codigo-anti-spam-zend-framework

在.htaccess中我像这样重定向......

RedirectMatch 301 /php/zend-framework/captcha-codigo-anti-spam-zend-framework   http://www.demo31.com/blog/php/zend-framework/captcha-codigo-anti-spam-zend-framework

但我收到错误“ERR_TOO_MANY_REDIRECTS”。

我做错了什么?

2 个答案:

答案 0 :(得分:2)

看起来两个URI都位于同一主机(www.demo31.com)上,因此当您使用RedirectMatch时,匹配的URI部分是重定向的一部分。实施例

如果我去:

http://www.demo31.com/php/zend-framework/captcha-codigo-anti-spam-zend-framework
  1. URI为/php/zend-framework/captcha-codigo-anti-spam-zend-framework
  2. RedirectMatch指令与URI匹配,重定向到:

    http://www.demo31.com/blog/php/zend-framework/captcha-codigo-anti-spam-zend-framework
    
  3. 新URI为/blog/php/zend-framework/captcha-codigo-anti-spam-zend-framework
  4. 但是,RedirectMatch指令再次匹配URI ,因为它包含/php/zend-framework/captcha-codigo-anti-spam-zend-framework
  5. 尝试将RedirectMatch更改为Redirect。或者,如果您只想重定向该特定URI(而不是像/php/zend-framework/captcha-codigo-anti-spam-zend-framework/some/other/stuff那样也会重定向,请添加一些分隔符:

    RedirectMatch 301 ^/php/zend-framework/captcha-codigo-anti-spam-zend-framework$   http://www.demo31.com/blog/php/zend-framework/captcha-codigo-anti-spam-zend-framework
    

    ^$

答案 1 :(得分:0)

RewriteRule ^bad_url$ good_url [R=301,L] 
谢谢!适合我