【问题标题】:301 Redirect Not Working with "+" Sign301 重定向不适用于“+”号
【发布时间】:2013-10-31 10:04:28
【问题描述】:

我想301重定向以下网址

www.domain.com/Gallery2/v/South/Actress/Ritu+Kaur+Actress+Photos

到

www.domain.com/gallery/ritu-kaur.html

我尝试了以下方法,但没有成功,

RewriteCond %{HTTP_HOST} ^domain\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.domain\.com$
RewriteRule ^Gallery2\/v\/South\/Actress\/Ritu\+Kaur\+Actress\+Photos\/$ "http\:\/\/www\.indiancinemagallery\.com\/gallery\/ritu\-kaur\.html" [R=301,L]

请指教

【问题讨论】:

  • 这应该有效。这是您唯一的 .htaccess 文件吗?
  • 不,这个在我新创建的 cms 的根目录中。另一个位于 Gallery2 文件夹中,其中安装了 gallery2(免费图库脚本)。我想将一些重要的 URL 重定向到我的新 cms,例如问题中给出的那个。请指教。
  • 好的,请在下面查看我的答案。

标签: regex apache .htaccess mod-rewrite redirect


【解决方案1】:

将此规则放在您的Gallery2/.htaccess 在任何其他重写规则之前

RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC]
RewriteRule ^v/South/Actress/Ritu\+Kaur\+Actress\+Photos/?$ http://www.indiancinemagallery.com/gallery/ritu-kaur.html [R=301,L,NC]

【讨论】:

  • 哇,非常感谢。它工作得很好。我有大约 50 个这样的链接要重定向,我应该在上面提到的重写下面添加它们吗?在 htaccess 中添加重写是否有任何限制?
  • No 50 完全没问题,对于 mod_rewrite 来说不是很多。
【解决方案2】:

+ 标志可能会被规范化为空格,请尝试用空格替换它们:

RewriteCond %{HTTP_HOST} ^domain\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.domain\.com$
RewriteRule ^Gallery2/v/South/Actress/Ritu\ Kaur\ Actress\ Photos/$ http://www.indiancinemagallery.com/gallery/ritu-kaur.html [L,R=301]

URI 在与RewriteRule 中的正则表达式匹配之前被解码,因此除非您的 url 编码了+ 符号,否则它们将被解码为空格。

【讨论】:

  • 谢谢,我尝试了同样的方法,但没有运气。实际上,该 URL 是由 Gallery2 使用 mod rewrite 生成的,并且正在尝试将该 URL 重定向到第二个。
猜你喜欢
  • 2017-08-28
  • 2010-12-08
  • 1970-01-01
  • 2015-12-30
  • 2014-08-21
  • 1970-01-01
  • 1970-01-01
  • 2012-12-19
  • 2020-02-09
相关资源
最近更新 更多