.htaccess重写GET变量w / 301重定向

时间:2013-09-14 19:42:39

标签: apache .htaccess mod-rewrite url-redirection

我正在尝试同时执行301重定向并通过剥离get变量来改进我的url结构。

我最近更新了我的网站,谷歌有一些缓存的旧页面已经移动了。结构看起来像这样

wwww.domain.com/locations.asp?zip=10001 <---OLD URL
wwww.domain.com/locations/?zip=10001 <---NEW URL

现在我正在使用.htaccess文件中的以下行将旧页面重定向到新页面:

Redirect 301 /solar_panel_systems_zip.asp /zip-code/

以上工作正常,但我希望网址如下:

wwww.domain.com/locations/zip/10001

我遇到了这篇文章.htaccess rewrite GET variables并尝试了这条规则,但没有运气:/

RewriteRule ^([\w\d~%.:_\-]+)$ index.php?page=$1 [NC]

我假设这是因为我是301重定向并进行重写?

1 个答案:

答案 0 :(得分:0)

你想在你的htaccess文件中输入这样的东西:

RewriteRule ^locations/zip/([0-9]+)$ /locations/?zip=$1 [L,QSA]

这样,当有人请求http://www.domain.com/locations/zip/10001时,他们将获得/locations.php?zip=10001的内容。

要将旧网址重定向到新网址,您还需要添加:

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /locations(\.asp)?/?\?zip=([0-9]+)&?([^\ ]*)
RewriteRule ^ /locations/zip/%3?%4 [L,R=301]

因此,当有人试图转到http://www.domain.com/locations.asp?zip=10001 http://www.domain.com/locations/?zip=10001时,他们会被重定向到http://www.domain.com/locations/zip/10001