【问题标题】:Rewritre friendly to old url and redirect old url to friendly重写对旧网址友好并将旧网址重定向到友好
【发布时间】:2012-12-14 03:00:27
【问题描述】:

我正在重写这个

http://myweb.com/post/5/title-of-the-post(新网址)

http://myweb.com/post.php?id=5(旧网址)

我通过以下方式实现了这一目标:

RewriteEngine On
#Options +FollowSymLinks
RewriteRule ^post/(.+)/(.+) post.php?id=$2

但如果我尝试输入旧网址仍然可以,那么我怎样才能重定向到新网址而不至于陷入循环?

【问题讨论】:

  • ¿新网址的资源在哪里,还是http://myweb.com/post.php?id=5
  • 是的,资源是一样的。只是把它变成友好的

标签: .htaccess redirect rewrite friendly-url


【解决方案1】:

首先,添加这条规则:

RewriteCond %{QUERY_STRING} id=([0-9]+)
RewriteRule ^post\.php$ post/%1/article [R=301,L]

这将强制立即重定向,并且不会处理任何进一步的规则。发布/什么/曾经的请求将不符合此规则并跳过。请注意,您必须创建一个通用的文章标题,因为 .htaccess 无法知道要使用的标题。

接下来,添加这条规则:

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

对 post.php 的请求已经在上面被捕获,所以它们不会到达这一行。这将按预期进行重定向,您不应该有无限循环。

【讨论】:

    猜你喜欢
    • 2013-01-06
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-03
    • 2016-11-22
    • 2016-09-01
    • 2015-08-02
    相关资源
    最近更新 更多