【问题标题】:mod_rewrite 301 redirect not workingmod_rewrite 301 重定向不起作用
【发布时间】:2011-09-16 19:05:14
【问题描述】:

我正在尝试设置将重定向此 URL 的重写:

/video-2011.php?video=150

到这里:

/video/150/freeform-title-text-here/

我在我的 HTACCESS 中使用这一行进行了重写:

RewriteRule ^video/([0-9]+)/(.*)$ video-2011.php?video=$1 [L]

但只要我将 R=301 添加到混合中,它就会中断。有什么想法吗?

这是中断时的完整 HTACCESS:

Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteRule ^video/([0-9]+)/(.*)$ video-2011.php?video=$1 [R=301,L]

非常感谢任何帮助,谢谢!

【问题讨论】:

  • 它坏了是什么意思?是不是说没找到,准备重定向等等……?
  • 抱歉没有澄清,/video.php?video=150 不会重定向到 /video/150/
  • 我认为您的意思是说 /video/150 不会重定向到 /video.php?video=150
  • @Connor Smith,我也很困惑。我认为@Kevin 正试图保持网址整洁。这就是为什么这应该 redirect /video.php?video=150 到 /video/150/ 和 rewrite /video/150/ 到 /video.php?video=150

标签: .htaccess mod-rewrite redirect rewrite http-status-code-301


【解决方案1】:

我认为您的 .Htaccess 中可能缺少一行。

Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteRule ^video/([0-9]+)/([a-z0-9-_]+)$ video-2011.php?video=$1 [L]
#New
RewriteCond %{REQUEST_URI} !^/video/([0-9]+)/([a-z0-9-_]+)/?$
RewriteCond %{QUERY_STRING} ^video=([0-9]+)&name=([a-z0-9-_]+)/?$
RewriteRule ^video-2011.php$ video/%1/%2/? [R=301,L]

我假设你想 重写 url,如果它是:

/video/150/freeform-title-text-here/

如果是,则重定向 url:

/video-2011.php?video=150

到:

/video/150/freeform-title-text-here/

所以这样可以保持网址看起来漂亮整洁。

如果我错了,请纠正我。

编辑

我添加了一个 RewriteCond 来阻止第二次重写的发生。

因为第一条规则显然会改写:

/video/150/freeform-title-text-here/

表示你看不到的查询字符串:

/video-2011.php?video=150

第二条规则也会发生。

【讨论】:

  • 谢谢汤姆,这正是我想要做的。我的 htaccess 中有两个 RewriteRule,301 似乎没有重定向这个 URL:/video-2011.php?video=150
  • 修正答案,在我的服务器上测试和工作。试试看,然后告诉我。
  • 感谢 Tom 的继续帮助,不幸的是,这会导致无限重定向情况 - “Firefox 检测到服务器正在以永远不会完成的方式重定向此地址的请求。”
  • 奇怪,我在本地测试过它对我有用。我会为你仔细检查。
  • 需要RewriteCond,经过测试并且现在可以正常工作,让我知道您的想法。更新了答案。
【解决方案2】:

你可以试试:

RewriteRule ^video/([0-9]+)/ /video-2011.php?video=$1 [R=301,L,NC,QSA]

是的,它会将/video/150/foo 重定向到/video.php?video=150,而不是像您在问题中所说的那样。

【讨论】:

  • 感谢您的帮助,但这实际上与我试图实现的目标相反。正如汤姆上面提到的,我希望将 /video-2011.php?video=150 重定向到 /video/150/
猜你喜欢
  • 1970-01-01
  • 2018-02-24
  • 1970-01-01
  • 1970-01-01
  • 2013-05-26
  • 2012-07-04
  • 1970-01-01
相关资源
最近更新 更多