重定向一个已经重写的URL(指向新的底层文件)


Redirect an already rewritten URL (that points to new underlying file)

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

然而,重要的是旧的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/现在是由一个新文件驱动的

您可以使用以下代码:

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]