【问题标题】:How to redirect URL with queries to index.html using htaccess如何使用 htaccess 将带有查询的 URL 重定向到 index.html
【发布时间】:2017-06-15 18:40:02
【问题描述】:

我已经在整个堆栈溢出中搜索了这个答案,但似乎找不到任何东西,所以我决定试一试并发布我的问题。

我有以下重写规则:

RewriteRule ^clients\/viewClients\/invoice\/\?id=([0-9]+)&invoice=([0-9]+)$ index.html

我希望它以这样的方式工作,当用户键入时

.../clients/viewClients/invoice/?id=28137&invoice=16884

进入浏览器,他或她被重定向到 index.html

我已经用一个正则表达式测试器测试了这个规则并且 url 通过了。

我很困惑,因为以下重写规则有效:

RewriteRule ^clients\/viewClients\/\?id=([0-9]+)$   index.html

当用户输入这个网址时:

../clients/viewClients/?id=28137

这两个规则的唯一区别是第一个在搜索查询中有一个额外的路径和一个额外的参数。

我希望有人可以为我澄清这个问题并为第一个重写规则提供解决方案

【问题讨论】:

  • 您确定您的意思是.html 而不是.php.html 页面将无法处理该查询字符串。
  • 我的意思是html,我只是希望用户现在被重定向回主页,我不会担心index.html上的查询字符串
  • @RiggsFolly 可以将 php 代码放在任何文件类型中。它只需要正确配置。
  • @Croises 是的!但这并不常见,如果这是正在做的事情,那么问题中确实应该提到它

标签: php apache .htaccess redirect mod-rewrite


【解决方案1】:

因为查询字符串不是 RewriteRule 测试 url 的一部分,所以没有一个可以工作。

您可以使用以下代码重写所有查询:

RewriteCond %{QUERY_STRING} .+
RewriteRule ^clients/viewClients/ index.html [NC,L]

或仅用于第一次:

RewriteCond %{QUERY_STRING} .+
RewriteRule ^clients/viewClients/invoice/$ index.html [NC,L]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-20
    • 2021-11-18
    • 1970-01-01
    • 2014-07-08
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多