Apache - 仅在规则文件目标具有EXESTS时应用重写规则

时间:2017-12-15 05:10:46

标签: apache mod-rewrite url-rewriting

这个问题可能总是出现:“如果文件不存在则应用规则”但是:注意!不是。这是相反的。

我想仅在规则的结果文件实际存在时应用重写规则,如果不存在,则忽略该规则并继续下一步。例如:

RewriteRule ^api/(.*) apifolder/$1.php

如果我输入网址:“api / file1”且文件“apifolder / file1.php”不存在,那么我希望此规则为忽略并继续。

我希望这个问题很明确。谢谢你的时间。

修改

有关我正在努力完成的更多信息。鉴于接下来的两条规则:

RewriteRule  ^api/([^/]+)/(.*)  app/$1/$2.api.php 
RewriteRule  ^api/([^/]+)(.*)  app/$1/$1.api.php 

如果第一个规则命运文件不存在,我希望忽略该规则并执行第二个规则。

1 个答案:

答案 0 :(得分:0)

为我工作过[N]标志。我的意思是我将第一条规则与[N]一起使用,它强制所有规则再次应用,但是这次RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f作为第二条规则的条件。另外,我需要使用第一个规则目标作为第二个规则源。应该是这样的:

RewriteRule  ^api/([^/]+)/(.*)  app/$1/$2.api.php [N]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
RewriteRule  ^app/([^/]+)/(.*).api.php  app/$1/$1.api.php