为什么我的HTACCESS在PHP中不能与多个RewriteRule一起使用?

时间:2019-12-13 12:24:35

标签: php .htaccess mod-rewrite

我在PHP中有多个RewriteRules有点问题。

这是我的htaccess:

DirectoryIndex start.php

RewriteEngine on 

RewriteRule insert          insert_kunde.php
RewriteRule insert2         insert_kunde_2.php

如果我致电 http://127.0.0.1/Adressen-REST/insert ,它可以正常工作,并将我重定向到 insert_kunde.php

但是,如果我呼叫 http://127.0.0.1/Adressen-REST/insert2 ,我将被重定向到insert_kunde.php,而不是insert_kunde_2.php。

如果我对此行发表评论,它将起作用:

#RewriteRule insert         insert_kunde.php

有人知道为什么吗?

2 个答案:

答案 0 :(得分:0)

您需要更加精确的模式:

RewriteEngine on
RewriteRule ^/?Adressen-REST/insert$ /Adressen-REST/insert_kunde.php [END]
RewriteRule ^/?Adressen-REST/insert2$ /Adressen-REST/insert_kunde_2.php [END]

您的示例中的问题是模糊模式insert/insert/insert2insert_kunde.phpinsert_kunde_2.php中的所有匹配。因此,您的第一个规则将始终被应用。并且将再次应用于已重写的请求。

答案 1 :(得分:0)

您必须执行以下操作。还要定义内部路径,以告知服务器。

RewriteRule insert          insert_kunde.php
RewriteRule insert2         insert_kunde_2.php

对此:

RewriteCond %{THE_REQUEST} /insert_kunde.php\sHTTP  [NC]
RewriteRule ^ /insert/ [L,R]
RewriteCond %{THE_REQUEST} /insert_kunde_2.php\sHTTP  [NC]
RewriteRule ^ /insert2/ [L,R]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/insert_kunde.php [L]
RewriteRule ^/insert_kunde_2.php [L]

我希望这可以。