我试图重定向几个在网址上都有问号的网页。
我基本上想要重定向:
www.example.com/?attachment_id=456 to www.example.com
还有大量的页面,其中包含不同的ID#。
我在htaccess尝试了一些没有运气的东西..
有什么想法吗?
这就是我的尝试:
RewriteCond %{QUERY_STRING} ^attachment_id=[0-9]
RewriteRule ^/$ http://www.example.com/? [L,NC,R=301]
答案 0 :(得分:5)
为什么你不能这样做?此代码应重定向此www.example.com/?attachment_id=456
RewriteCond %{QUERY_STRING} ^attachment_id=[0-9]+
RewriteRule ^/?$ http://www.example.com/? [L,NC,R=301]
我使/
可选,以便可以在Apache配置或.htaccess中使用。另外,我在RewriteRule末尾的重定向中保留了?
,以删除重定向上的任何查询字符串。
答案 1 :(得分:4)
你的方法是完美的,只是一些小的修正:
RewriteEngine on
RewriteCond %{QUERY_STRING} attachment_id=[0-9]+
RewriteRule ^/$ http://www.example.com/ [L,R=301]
以上是主机配置的版本。请注意,必须在更改主机配置后重新启动http服务器才能使其生效。要调试,请参阅http服务器错误日志文件,尤其是在重新启动时。
如果您必须依赖.htaccess
样式文件,那么不幸的是,规则本身的语法会略有不同:
RewriteEngine on
RewriteCond %{QUERY_STRING} attachment_id=[0-9]+
RewriteRule ^$ http://www.example.com/ [L,R=301]
此类文件必须位于主机文档根目录的主文件夹中。此外,必须通过AllowOverride
选项在主机配置中启用此类文件的解释。
通常,总是更喜欢.htaccess
样式文件上的此类规则的主机配置,但您需要具有管理访问权限。 .htaccess
样式文件非常容易出错,难以调试并且确实会降低服务器速度。