如何在Apache重写规则中使用解析特殊字符?

时间:2016-04-19 23:44:34

标签: regex apache .htaccess mod-rewrite url-rewriting

所以我有这个Apache重写规则:

RewriteRule ^news.php?viewStory=([0-9]+)$ index.php?page=news&viewStory=$1

我需要改变网站的结构,我需要考虑旧的结构。

除了一件事之外,一切正常。我需要它来解析?中间部分的字符(^news.php?...)字面意思 - 不要将其视为特殊字符。但我希望其他特殊字符正常工作。

这样做的正确方法是什么?我无处可寻找任何有效的解决方案。

1 个答案:

答案 0 :(得分:2)

您不能以这种方式使用查询字符串。您需要在条件中使用查询字符串来检查它是否存在。然后在规则中使用捕获的反向引用。让我知道它对你有用。

RewriteEngine On
RewriteCond %{QUERY_STRING} ^viewstory=([0-9]+)$
RewriteRule ^news\.php$ index.php?page=news&viewStory=%1 [R=301,L]