首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RewriteCond混淆

RewriteCond混淆
EN

Stack Overflow用户
提问于 2011-05-02 07:11:41
回答 2查看 450关注 0票数 0

我有以下重写设置:

代码语言:javascript
复制
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 (它们自己进行路由)捕获非文件和目录,其余的则返回文件或目录。但是,被mod_rewrite视为''的主路由'/'没有被捕获-我猜这是因为/是一个目录-根。

我如何解决这个问题,使其在保持目录可访问的同时通过web.php?

EN

回答 2

Stack Overflow用户

发布于 2011-05-03 14:37:02

首先,您需要将规则中的REQUEST_URI更改为REQUEST_FILENAME。请参阅http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritecond

REQUEST_URI:在HTTP请求行中请求的资源。

REQUEST_FILENAME:与请求匹配的文件或脚本的完整本地文件系统路径。

然后,添加另一个规则:

代码语言:javascript
复制
RewriteCond %{REQUEST_URI} /
RewriteRule .* web.php [L]

因此,最终结果将是:

代码语言:javascript
复制
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]
票数 1
EN

Stack Overflow用户

发布于 2011-05-02 07:24:00

语法: RewriteBase URL-path

URL-path可以是root相对路径或为空。空的URL路径值意味着规则库将等于网站根。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5852095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档