【问题标题】:Redirect an already rewritten URL (that points to new underlying file)重定向已重写的 URL(指向新的基础文件)
【发布时间】:2014-03-24 16:48:15
【问题描述】:

用新系统替换旧系统,这需要创建新文件和新 URL

但重要的是旧网址重定向到新网址

现在我在本地进行测试并设置了两个简单的文件,item.phpitem-newpage.php

这是我迄今为止尝试过的:

RewriteEngine on
RewriteRule ^([a-zA-Z]+)-([a-zA-Z]+)-item/$ /item.php?size=$1&color=$2
RewriteRule ^([a-zA-Z]+)-([a-zA-Z]+)-item-newpage/$ /item-newpage.php?size=$1&color=$2
RedirectMatch 301 ^([a-zA-Z]+)-([a-zA-Z]+)-item/$ ^$1-$2-item-newpage/$ [R=301,L]

也试过这个:

RewriteEngine on
RewriteRule ^([a-zA-Z]+)-([a-zA-Z]+)-item/$ /item.php?size=$1&color=$2
RewriteRule ^([a-zA-Z]+)-([a-zA-Z]+)-item-newpage/$ /item-newpage.php?size=$1&color=$2
RewriteRule ^([a-zA-Z]+)-([a-zA-Z]+)-item/$ ^$1-$2-item-newpage/$ [R=301,L]

但尚未进行重定向

另外,我真的很想在我的 .htaccess 文件(即第 2 行)中删除对旧文件的引用,并尽可能从服务器中删除它们

@anubhava,将其归结为期望的结果:

www.mysite.com/small-blue-item/

应该 301 重定向到

www.mysite.com/small-blue-item-newpage/

记住/small-blue-item-newpage/ 现在由一个新文件提供支持

【问题讨论】:

  • 您要删除哪些示例 URL?
  • 嗨,我提供了一个例子:)
  • 好的,我在下面发布了答案。

标签: php regex .htaccess mod-rewrite redirect


【解决方案1】:

您可以使用此代码:

RewriteEngine on

RewriteRule ^([a-zA-Z]+)-([a-zA-Z]+)-item/?$ /$1-$2-item-newpage/ [R=301,L]

RewriteRule ^([a-zA-Z]+)-([a-zA-Z]+)-item-newpage/$ /item-newpage.php?size=$1&color=$2 [L,QSA]

【讨论】:

  • 嗨,这很接近;谢谢你。这会将我发送到arge-blue-item-newpage/$,在 URL 的末尾带有一个美元符号(并且页面没有加载)。如果我手动删除地址栏中 url 末尾的 $ 页面加载。不知道如何更改代码以阻止将额外的 $ 放入 URL 中
  • PS - 第二行的问号有什么作用:...item/?$?
  • 更正了尾随 $ 问题。 /?$ 使尾随 / 在 URI 中成为可选。立即尝试
  • 谢谢 :)
猜你喜欢
  • 1970-01-01
  • 2021-03-20
  • 1970-01-01
  • 2014-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多