【问题标题】:htaccess Redirect with an ampersandhtaccess 使用&符号重定向
【发布时间】:2014-12-10 12:28:02
【问题描述】:

我有一个简单的 301 Redirects,我需要在一个有一些 URL 更改的网站上实现它。除了两个都可以正常工作,两个在 URL 中没有与符号(实际上是 %26):

Redirect 301 /search/21/0/Hair-%26-Beauty /search/21/0/1/Make-up-and-Hair-%26-Beauty

有没有办法让重定向命令正确解析%26?我会尝试只使用 & 但这是两个 URL 所需要的。

根据我的阅读,我只需要转义%26,但我不确定如何,甚至不知道如何。

感谢您提供任何信息。


这是我的 .htaccess 文件的开头。没有其他可能发生冲突的规则:

RewriteEngine on
RewriteRule ^(.*)/$ /$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^example\.com
RewriteRule ^(.*)$ http://www.example.com/$1 [R=permanent,L]
RewriteRule ^search/([^/]*)/([^/]*)/([^/]*)/(.*)$ /search.php?S=$1&C=$2&P=$3 [L]
Redirect 301 /search/1/0/Photography http://www.example.com/search/1/0/1/Wedding-Photography

【问题讨论】:

    标签: regex .htaccess redirect


    【解决方案1】:

    您可以将mod_rewrite 规则与%26 一起用作\x26。在您的 DOCUMENT_ROOT/.htaccess 文件中使用此代码:

    RewriteEngine On
    
    RewriteRule ^search/21/0/Hair-\x26-Beauty/?$ /search/21/0/1/Make-up-and-Hair-%26-Beauty [L,NE,NC,R=301]
    

    【讨论】:

    • 不幸的是,/search/21/0/Hair-%26-Beauty 已经是一个重写的 URL,所以恐怕这似乎不起作用。
    • 很简单,这部分 URL 是用于 SEO 的,就像 StackOverflow 上的一样。不幸的是,我将其作为第一条规则进行了尝试,但仍然无效:-/
    • 我在发布之前对其进行了很好的测试,所以请放心,这是一个有效的规则。它不起作用的唯一原因是:您有其他冲突的规则,或者您在子目录之一中有其他重叠的 htaccess,或者您的 Apache 版本不正确。
    • 我已使用 .htaccess 中的第一条规则更新了原始问题。我尝试将您的行作为第 2 行、第 5 行,甚至在 ^search 行之后。其他所有类似的规则(其中没有 %26)都可以正常工作。
    • 感谢您展示 .htaccess 代码,在大多数基于 mod_rewrite 的规则中,很少有像 Redrect 指令那样令人怀疑的事情。此外,您还没有向我提供您在浏览器中看到的未重定向的完整 URL。
    猜你喜欢
    • 2014-01-04
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多