首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RewriteCond作用域

RewriteCond作用域
EN

Stack Overflow用户
提问于 2018-08-01 18:02:31
回答 2查看 282关注 0票数 3

我想测试下面两个规则的文件是否都存在,但它似乎只适用于第一个规则。第二条规则将错误地匹配我的/style.css文件,并显示php页面而不是style.css。

它不是应该在[L]标志之前测试所有后续规则的文件是否存在吗?

代码语言:javascript
复制
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f 

RewriteRule ^([^/]+)/([^/]+)/?$ browse_folder.php?username=$1&folder=$2
RewriteRule ^([^/]+)/?$ browse_user.php?username=$1 [L]

如果我在这两行之前重复file_exists测试,它会按预期工作。

代码语言:javascript
复制
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f 

RewriteRule ^([^/]+)/([^/]+)/?$ browse_folder.php?username=$1&folder=$2

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f 

RewriteRule ^([^/]+)/?$ browse_user.php?username=$1 [L]
EN

回答 2

Stack Overflow用户

发布于 2018-08-01 18:18:39

RewriteCond仅适用于下一个RewriteRule。您可以制定一个单独的规则,在其他重写规则之上跳过所有文件和目录。

代码语言:javascript
复制
RewriteEngine On

# skip all existing files and directories
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule ^ - [L]

RewriteRule ^([^/]+)/([^/]+)/?$ browse_folder.php?username=$1&folder=$2 [L,QSA]

RewriteRule ^([^/]+)/?$ browse_user.php?username=$1 [L,QSA]
票数 4
EN

Stack Overflow用户

发布于 2018-08-01 18:16:50

不是应该在L标志之前测试所有后续规则的文件是否存在吗?

不,不是的。RewriteCond仅应用于第一个-下一个RewriteRule。从official documentation

RewriteCond指令定义规则条件。RewriteRule指令之前可以有一个或多个RewriteCond。然后,仅当URI的当前状态与其模式匹配并且满足这些条件时,才使用以下规则。

注意can precede a RewriteRule

解决方法

如果您不想重复,可以按照以下步骤操作:

代码语言:javascript
复制
RewriteEngine On

# Don't touch existing files/folders
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

# Those rules are only applied to non-existing files/folders
RewriteRule ^([^/]+)/([^/]+)/?$ browse_folder.php?username=$1&folder=$2
RewriteRule ^([^/]+)/?$ browse_user.php?username=$1 [L]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51630503

复制
相关文章

相似问题

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