如何解决RewriteCond混乱
| 我有以下重写设置:RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !-d
RewriteRule ^api/?.*$ api.PHP [NC,L]
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !-d
RewriteRule ^.*$ web.PHP [L]
我想要的是让非文件和目录被api.PHP或web.PHP(它们自己进行路由)捕获,其余的返回文件或目录。但是,主路由“ 1”(由mod_rewrite视为“ 2”)没有被捕获-我猜这是因为/是目录-根。
如何解决此问题,以便在保持目录可访问性的情况下通过web.PHP?
解决方法
首先,您需要将规则中的REQUEST_URI更改为REQUEST_FILENAME。参见http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritecond
REQUEST_URI:在中请求的资源
HTTP请求行。
REQUEST_FILENAME:完整的本地
文件或脚本的文件系统路径
符合要求。
然后,添加另一个规则:
RewriteCond %{REQUEST_URI} /
RewriteRule .* web.php [L]
因此最终结果将是:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^api/?.*$ api.php [NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)? web.php [NC,L]
RewriteCond %{REQUEST_URI} /
RewriteRule .* web.php [L]
,语法:RewriteBase URL路径
URL路径可以是根相对路径或为空。空的URL路径值表示规则库将等于网站根目录。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。