301 Htaccess 重写规则查询字符串

Posted

技术标签:

【中文标题】301 Htaccess 重写规则查询字符串【英文标题】:301 Htaccess RewriteRule Query_String 【发布时间】:2011-04-18 13:53:46 【问题描述】:

问题: 访问者打开网址 website.com/?i=133r534|213213|12312312 但此网址不再有效他们需要被转发到 website.com/#Videos:133r534|213213|12312312

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

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

【问题讨论】:

【参考方案1】:

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

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

为什么这很棘手?

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

我在 Apache 2.2 上对此进行了测试。

【讨论】:

伟大的汤姆!非常感谢,这个对我有用,我现在明白了:)

以上是关于301 Htaccess 重写规则查询字符串的主要内容,如果未能解决你的问题,请参考以下文章

301 通过 .htaccess 将查询字符串重定向到 SEO 友好的 URL

PHP中查询字符串的HTACCESS重写规则

htaccess 301 重定向 - 删除查询字符串 (QSA)

.htaccess 中带有查询字符串的 301 的正确语法是啥? [关闭]

为啥我的 .htaccess 301 重定向规则不起作用?

高分请教.htaccess规则写法..URL 301