1

我想在 .htaccess 中使用 mod_rewrite 重写 URL,例如http://www.companysite.com/gallery.php?galid=1&desc=blah%20blah%20blahhttp://www.companysite.com/画廊/1/blah-blah-blah

使用Loren给我 的粗略代码:

#Perform a 301 redirect from the old URL to the new URL  
RewriteRule ^gallery.php?galid=([0-9]+)&desc=(.*) http://www.companysite.com/gallery/$1/$ [R=301,L]  

#Rewrite new URL to the proper internal URL
RewriteRule ^gallery/([0-9]+)/(.*)$ ^gallery.php?galid=$1&desc=$2  [L]

如果查询字符串为descis blah%20blah%20blah,将如何重写?理想情况下,我想desc被改写为blah-blah-blah。我怎么做?

4

1 回答 1

2

您可以仅使用 htaccess 文件执行此操作。

您应该更改站点中的链接以反映新的重写 URL,并为指向新 URL 的旧 URL 放置 301 重定向

对于已经被 google 索引的页面,您可以执行从旧 URL 到新 URL 的 301 重定向 - 这将告诉 google 旧 url 已更新为新重写的 url,这应该可以防止您丢失排名/索引那个页面

如果有人点击旧网址的链接,它不会自动被重写,除非你有 301 重定向,然后它会自动将用户重定向到正确重写的 URL

请让我知道我是否可以再具体说明上述领域。

一旦您创建了新的 URL 结构并设置了 301 以将旧 url 指向新 url,我建议您向 google 提交 OLD 站点地图,他们将抓取旧 url,检测 301 并使用您新重写的 URL 更新索引- 我过去已经做过一百万次了,而且效果很好

301 旧 URL 到新 URL

这是通过 htaccess 文件进行的非常简单的 301 重定向示例

RewriteRule ^contact_us\.php$ http://www.mydomain.com/contact_us.html [R=301]

使用上面的链接重写的示例

这是一个快速而肮脏的示例,首先对旧 url 执行 301,然后将新 url 重写为内部 url 结构 - 快速改进 - 如果有任何错误,请道歉

#Perform a 301 redirect from the old URL to the new URL
RewriteRule ^gallery.php?galid=([0-9]+)&desc=(.*) http://www.mydomain.com/gallery/$1/$2 [R=301,L]

#Rewrite new URL to the proper internal URL
RewriteRule ^gallery/([0-9]+)/(.*)$ ^gallery.php?galid=$1&desc=$2  [L]

记住

重写/gallery.php?galid=1&desc=blah%20blah%20blah/gallery/1/blah-blah-blah需要您考虑您的空间blah blah blah- 如果您重写,blah-blah-blah那么当您收到查询字符串desc时,它将收到blah-blah-blah不同于blah blah blah

明白我的意思了吗?

资源

这是一篇关于 URL 重写和重定向的好文章

于 2013-04-12T18:00:46.740 回答