【问题标题】:How to use parse special characters literally in Apache rewrite rule?如何在 Apache 重写规则中使用字面解析特殊字符?
【发布时间】:2016-04-19 23:44:34
【问题描述】:

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

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

在我更改网站结构时需要它,并且我需要考虑旧结构。

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

这样做的正确方法是什么?我在任何地方都找不到任何可行的解决方案。

【问题讨论】:

  • 我试过了 - 似乎没有用。

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


【解决方案1】:

您不能那样使用查询字符串。您需要在条件中使用查询字符串来检查它是否存在。然后在规则中使用捕获的反向引用。让我知道它是如何为您工作的。

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

【讨论】:

  • 这似乎不起作用。我不需要 RewriteCond 中的完整 url 而不仅仅是那部分吗?
  • 不,你没有。这对我来说可以。尝试清除缓存并尝试一下。
  • 将“viewstory”更改为“viewStory”后,它工作正常,感谢您的帮助! :)
猜你喜欢
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-13
  • 1970-01-01
  • 2012-04-22
相关资源
最近更新 更多