【问题标题】:Form method GET not working with mod_rewrite表单方法 GET 不适用于 mod_rewrite
【发布时间】:2015-01-06 21:33:25
【问题描述】:

亲爱的 Stackoverflowers,

我在这个论坛上阅读了多个答案,但似乎没有一个对我有用,或者他们只是没有解释他们的答案..

我有一个使用 GET 作为方法的表单。由于我使用的是 mod_rewrite,因此该表单不再起作用。我已经阅读了一些关于在您的 .htacces 中使用 %{QUERYSTRING} 的内容,但我找不到任何关于如何操作的好信息。如果我更改“?”,则 GET 方法有效到一个“&”。对我来说,这是合乎逻辑的,因为我已经在 .htacces 中使用了问号。

有人可以向我解释如何结合使用带有 GET 方法的表单和 mod_rewrite 吗?

谢谢!

我的 .htacces 目前看起来像这样:

    Options -Indexes 
<IfModule mod_rewrite.c>
Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI}  ^/([^/]+)/?([^/]*)?/?([^/]*)?/?([^/]*)?/?   [NC]
RewriteRule .*    index.php?page=%1&id=%2&code=%3 [L]
</IfModule>

更新:

我使用的网址是: rechtenkrom.nl/zoek-opdracht?id=&trefwood=&headId=&categorie=&postcode=&distance=&provincie=&submit=

当我执行 var_dump($_GET) 时,它没有在“?”之后显示任何 GET 变量。 通过将 QSA 添加到我的最后一个重写规则中,它现在可以看到所有 GET 变量 :)

【问题讨论】:

  • 您应该稍微解释一下您所指的其他答案。如果其他问题的答案似乎有用,您应该提供指向它们的链接,并准确解释那些对您来说不够的答案是什么。此外,您的代表可以在任何地方发表评论(授予 50 分),因此您可以将 cmets 留在要求澄清的其他答案上。
  • 你到底想做什么?
  • 你想使用什么网址?

标签: php apache .htaccess mod-rewrite


【解决方案1】:

将它与你的最后一个 RewriteRule 一起使用:

RewriteRule .*    index.php?page=%1&id=%2&code=%3 [QSA,L]

QSA = 当替换 URI 包含查询字符串时,RewriteRule 的默认行为是丢弃现有的查询字符串,并将其替换为新生成的查询字符串。使用 [QSA] 标志会合并查询字符串。

【讨论】:

  • 谢谢!这正是我想要的!我将使用我尝试使用的链接更新我的答案。非常感谢。
猜你喜欢
  • 2020-08-12
  • 2016-03-21
  • 1970-01-01
  • 1970-01-01
  • 2018-04-22
  • 1970-01-01
  • 2014-04-13
  • 2016-05-05
  • 1970-01-01
相关资源
最近更新 更多