【问题标题】:htaccess 301 redirect into a rewrite rulehtaccess 301 重定向到重写规则
【发布时间】:2013-01-21 09:04:17
【问题描述】:

我知道这里一定有答案,但我无法找到/定位它。

同域有一个典型的301重定向规则:

Redirect 301 /path/to/strange-url.htm /path/to/new/canonical-url.htm

稍后在 htaccess 文件中,canonical-url 有一个重写规则

RewriteRule ^([^/]+)/([^/]+)([^/]+)/([^-]+)-([^.]+)\.htm$ php/page.php?var1=$1&var2=$2&var3=$3&var4=$4&var5=$5 [NC,L]

问题是一旦 301 重定向激活,我的新 url 就变成了:

/path/to/new/canonical-url.htm?var1=xxxx&var2=xxxx&var3=xxxx&var4=xxxx&var5=xxxx

我怎样才能避免这种情况并只维护干净的网址:/path/to/new/canonical-url.htm

【问题讨论】:

    标签: .htaccess redirect rewrite


    【解决方案1】:

    好的,我终于找到了一个可行的解决方案

    我将所有 Redirect 301 规则更改为 RewriteRule [R=301,L],所以:

    Redirect 301 /path/to/strange-url.htm /path/to/new/canonical-url.htm
    

    变成

    RewriteRule ^/path/to/strange-url.htm http://www.example.com/path/to/new/canonical-url.htm [R=301,L]
    

    另外,我已经在实际重写之前移动了所有以前的重定向

    【讨论】:

      【解决方案2】:

      好像你有一个循环,尝试在请求的 URI 上添加条件,比如:

      RewriteCond %{REQUEST_URI} !^php/page.php
      RewriteRule ^([^/]+)/([^/]+)([^/]+)/([^-]+)-([^.]+)\.htm?$ php/page.php?var1=$1&var2=$2&var3=$3&var4=$4&var5=$5 [NC,L]
      

      【讨论】:

      • 不,这不起作用。我仍然在重定向网址的末尾得到查询字符串
      • 能否提供.htaccess文件的全部内容?
      • 我宁愿不...它的规则列表太长(超过 250k)。我提到的 301 重定向是 540 条规则(旧的蹩脚 html 页面),将在一种新模式下重写
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-22
      • 2011-01-05
      • 1970-01-01
      • 2012-11-07
      • 1970-01-01
      相关资源
      最近更新 更多