我正在尝试同时执行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重定向并进行重写?
答案 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
。