我有一个非常烦人的重定向,我无法弄清楚。
我有数百个如下所示的页面:
example.com/directory/in.php?url_id=28930
我想重定向所有例如/directory/in.php?url_id=28930
重定向全部都会转到主页。
您可以建议什么重定向规则?
我已经尝试了许多重定向规则但由于某种原因都失败了。
答案1
要检查特定的查询字符串,您需要使用 mod_rewrite 和一个RewriteCond
针对QUERY_STRING
服务器变量进行检查的指令。(该RewriteRule
模式仅与 URL 路径匹配,这显然不包括查询字符串。)
例如,要重定向/directory/in.php?url_id=28930
根.htaccess
文件中的特定 URL,您可以执行以下操作:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^url_id=28930$
RewriteRule ^directory/in\.php$ / [QSD,R=302,L]
该QSD
标志(查询字符串丢弃 - 仅限 Apache 2.4+)从重定向 URL 中删除查询字符串。如果您使用的是 Apache 2.2,则需要?
在代换字符串,即/?
,以便有效地从重定向 URL 中删除查询字符串。否则,默认情况下,请求中的查询字符串将传递到目标 URL(即替代争论)。
还请注意,这是一个临时的 302 重定向。如果要将其设为永久重定向,则只有当您确定它正常工作时才将其更改302
为(以避免任何缓存问题)。301
为了使其更加通用并重定向任何包含数字url_id
参数值的 URL,请将RewriteCond
指令更改为类似以下内容:
RewriteCond %{QUERY_STRING} ^url_id=\d+$
在旁边:从 SEO 的角度来看,像这样到主页的大规模重定向很可能会被 Google 和其他搜索引擎视为软 404。