![301 重定向自定义链接](https://linux22.com/image/681799/301%20%E9%87%8D%E5%AE%9A%E5%90%91%E8%87%AA%E5%AE%9A%E4%B9%89%E9%93%BE%E6%8E%A5.png)
我有几千个这样的链接
/Gallery?cmd=viewCarGallery&carID=3747&pgID=1
现在我想使用 .htaccess 将它们重定向到另一个网站的其他链接。每个链接都将重定向到其自己的目标链接。我尝试过这样的
Redirect 301 /Gallery?cmd=viewCarGallery&carID=3747&pgID=1 http://example.com/gallery/fcar_gallery
但不起作用。我已在服务器中启用 mod_rewrite,其他重定向运行正常。
答案1
查询字符串不是 Redirect 指令中匹配的一部分,要重定向查询字符串,您需要使用 mod-rewrite ,如下所示:
选项1
RewriteEngine on
RewriteCond %{THE_REQUEST} /Gallery\?cmd=viewCarGallery&carID=3747&pgID=1 [NC]
RewriteRule ^ http://example.com/gallery/fcar_gallery? [NC,L,R]
选项 2
RewriteEngine on
RewriteCond %{QUERY_STRING} ^cmd=viewCarGallery&carID=3747&pgID=1 [NC]
RewriteRule ^ http://example.com/gallery/fcar_gallery? [NC,L,R]
我们使用空问号?在目标 url 末尾丢弃旧的查询字符串,否则这些查询字符串会默认附加到目标 url。
更改R到R=301如果您想使重定向永久生效。
[在 apache2 和 2.4 上测试]