0

我正在尝试同时进行 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/

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

wwww.domain.com/locations/zip/10001

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

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

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

4

1 回答 1

0

你希望在你的 htaccess 文件中有这样的东西:

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

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

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

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 or http://www.domain.com/locations/?zip=10001时,他们会被重定向到http://www.domain.com/locations/zip/10001.

于 2013-09-14T19:49:00.877 回答