在.html之后使用查询字符串重写Mod

时间:2012-03-29 10:31:31

标签: .htaccess mod-rewrite

我正在尝试对我的网站执行mod重写。而且我曾经做过很多次重写。当然,在我满足新的要求,在 .html 之后创建带有查询字符串的重写URL之前,我非常重要。 示例 - http://kypseli/admin/catagory.html?parent_id=1
我用过这个正则表达式。
RewriteRule ^([A-Za-z0-9-/_]+).([html])/?$ index.php?rt=$1&%{QUERY_STRING}
但是查询字符串值(parent_id)没有传递。
这是完美的 .html 部分。
http://kypseli/admin/catagory/?parent_id=1
但我希望它与 .html 部分一样,因为我在WWW的每个地方都发现了很多相同的技术用法。这是一个例子 http://www.espncricinfo.com/ci/content/video_audio/559158.html?genre=46

有人可以帮忙。

1 个答案:

答案 0 :(得分:3)

如果要将第一个查询中的所有查询字符串元素添加到重写的查询中,则需要将[QSA]标记添加到rewriteRule,如果您更喜欢长描述,则需要[qsappend]标签

RewriteRule ^([A-Za-z0-9-/_]+)/?$ index.php?rt=$1 [qsappend]

现在我并不完全理解你对'.html'的意思,但我希望这已经足够了。

修改

你的问题可能是点,它应该被转义\.并且它应该在optionnal部分,如果它是optionall所以:

RewriteRule ^([A-Za-z0-9-/_]+)/?$ index.php?rt=$1 [qsappend]
RewriteRule ^([A-Za-z0-9-/_]+)\.html?$ index.php?rt=$1 [qsappend]

或者,如果您只想要一个规则,这应该有效(未经测试)

RewriteRule ^([A-Za-z0-9-/_]+)([\.html|/])?$ index.php?rt=$1 [qsappend]

并且您不确定在rewriteRule中是否真的需要?,即使没有查询字符串,您也可能希望应用它。