表单方法 GET 不适用于 mod_rewrite

Form method GET not working with mod_rewrite

亲爱的 Whosebugers,

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

我有一个使用 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>

更新:

我用的URL是: rechtenkrom.nl/zoek-opdracht?id=&trefwoord=&headId=&categorie=&postcode=&distance=&provincie=&submit=

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

将其与上一个 RewriteRule 一起使用:

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

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