301 Htaccess RewriteRule Query_String

时间:2010-09-28 23:22:23

标签: .htaccess mod-rewrite get query-string

问题:访问者打开网址 website.com/?i=133r534|213213 | 012312312 ,但此网址已无效他们需要转发到 website.com/#Videos:133r534|213213 | 012312312

我尝试了什么:在过去的几个小时里,我尝试了许多使用Query_String的mod_rewrite(.htaccess)规则,但都失败了。 this topic中的最后一条消息显示了此问题的解决方案,但在我的情况下会有什么规则。

我很好奇你将如何解决这个问题:)!

1 个答案:

答案 0 :(得分:6)

以下将处理您显示的简单案例。如果您需要在查询字符串或文件名中允许其他参数,则需要添加其他逻辑。

RewriteEngine On
RewriteCond %{QUERY_STRING} ^i=(.*)
RewriteRule ^.*  /#Video:%1? [NE,R=permanent]

为什么这很棘手?

  • RewriteRule不会查看查询字符串,因此您必须使用RewriteCond来评估QUERY_STRING变量并捕获稍后需要的部分(通过%1引用)
  • 哈希字符(#)通常是转义的,您必须指定[NE]标志
  • 尾随?在替换字符串上需要禁止原始查询字符串

我在Apache 2.2上测试了这个。