【问题标题】:Can't match RewriteRule无法匹配 RewriteRule
【发布时间】:2013-07-15 23:23:33
【问题描述】:

我需要做一个非常简单的 URL 重写,但我的 RewriteRule 不起作用。

我想要这个网址:http://myweb.com:8080/MySite/bla?bla

变成这样:http://myweb.com:8080/MySite/index.php

我的.htaccess文件内容是这样的:

RewriteEngine On
RewriteRule bla\?bla index.php

它位于“MySite”文件夹中。我可以成功地执行其他 url 重写规则,但是每当我需要编写带有问号的规则时,我就会陷入困境。

我做错了什么?

【问题讨论】:

  • 您将 .htaccess 文件放在哪里?在我的网站中?
  • 正如我在问题中已经写的那样,在“MySite”中是的。
  • 好的。不匹配是合乎逻辑的。 ? 之后的内容将成为 GET 变量。因此,您的 URl 变为带有 GET 变量的/MySite/bla,其键为bla。尝试使用RewriteRule bla index.php

标签: regex mod-rewrite url-rewriting


【解决方案1】:

您需要为此使用%{QUERY_STRING} 重写条件。

RewriteEngine On

RewriteCond %{QUERY_STRING} ^bla$
RewriteRule ^/?bla$ index.php [NC,L]

请注意,重写规则中的? 与查询字符串中的? 不匹配。该部分由%{QUERY_STRING} 完全处理。 [NC] 只是使规则不区分大小写,[L] 将规则标记为最后。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-13
    • 1970-01-01
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多