我在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
有人知道为什么吗?
答案 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
,/insert2
,insert_kunde.php
和insert_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]
我希望这可以。