如何重写最后有意外%20的网址?

时间:2011-08-16 16:07:04

标签: mod-rewrite iirf

我的网站上有一堆反向链接,这些反向链接具有正确的URL,除了有一个意外的尾随空格,因此链接出现了尾随%20,导致找不到页面错误。< / p>

我试过这个变种:

RewriteRule ^/%20 /

但它不起作用。

是否还需要RewriteCond声明?

请注意,这是一个IIS 6服务器,这些是我链接到的Wordpress页面。

有人请告诉他在网址末尾删除%20的密码。

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用以下规则永久重定向具有尾随%20的所有相关网址,而不会显示尾随%20的相同网址:

如果您在UrlDecoding Off中使用iirf.ini,请使用:

RedirectRule (.*)%20$ $1 [R=301]

否则,在尝试应用规则之前,IIRF会自动为您解码URL。因此,您可以使用:

RedirectRule (.*)\s$ $1 [R=301]

要使用testdriver.exe

进行测试
  1. 将上述规则放在名为iirf.ini
  2. 的文件中
  3. 创建一个名为SampleUrls.txt的文件,其中包含一些测试网址,例如:

    /                      NO REWRITE
    /%20                   REDIRECT 301 /
    /article               NO REWRITE
    /article%20            REDIRECT 301 /article
    
  4. 使用类似于%iirfpath%\testdriver.exe -d .
  5. 的命令调用testdriver

    请注意:testdriver 解码网址。

    你应该得到类似于以下的输出(我删除了一些换行符):

    TestDriver: linked with 'Ionic ISAPI Rewriting Filter (IIRF) 2.1.1.28 x64 RELEASE'.
    TestDriver: The IIRF library was built on 'Aug  8 2011 02:26:29'
    
    Processing URLs...(.\SampleUrls.txt)
    
    ***
    Retrieving server variable that is not supported by TestDriver (SCRIPT_NAME)
    
    NO REWRITE '/' ==> --
    OK
    
    ***
    Retrieving server variable that is not supported by TestDriver (SCRIPT_NAME)
    
    REDIRECT 301 '/%20' ==> '/'
    OK
    
    ***
    Retrieving server variable that is not supported by TestDriver (SCRIPT_NAME)
    
    NO REWRITE '/article' ==> --
    OK
    
    ***
    Retrieving server variable that is not supported by TestDriver (SCRIPT_NAME)
    
    REDIRECT 301 '/article%20' ==> '/article'
    OK
    
    
    0 Errors in 4 Total Trials