表单方法GET不能与mod_rewrite一起使用

时间:2015-01-06 21:33:26

标签: php apache .htaccess mod-rewrite

亲爱的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=&trefwoord=&headId=&categorie=&postcode=&distance=&provincie=&submit =

当我执行var_dump($ _ GET)时,它没有在&#34;?&#34;之后显示任何GET变量。 通过将QSA添加到我的上一次重写规则,它现在可以看到所有GET变量:)

1 个答案:

答案 0 :(得分:1)

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

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

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