You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置RewriteCond限定%{REQUEST_URI}仅包含特定字符?

.htaccess规则优化方案

你当前添加的条件RewriteCond %{REQUEST_URI} ^/([a-z0-9]+)存在缺陷——它仅验证了URI开头的部分,无法阻止后续出现非a-z0-9的字符(比如/abc!123这类包含特殊字符的请求也会匹配该条件),无法满足“仅包含a-z或0-9拉丁字符”的要求。

以下是两种更严谨的实现方案,可根据你的路径需求选择:

方案一:允许多级路径(如/abc/123、/abc/)

直接通过强化RewriteRule的匹配模式来限制路径字符,无需额外条件:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-z0-9]+)(/[a-z0-9]+)*/?$ /folder/file.php?fldr=$1 [NC,L,QSA]
  • 模式^([a-z0-9]+)(/[a-z0-9]+)*/?$确保整个路径仅由a-z0-9字符和必要斜杠组成,末尾斜杠可选
  • [NC]参数忽略大小写,兼容大写字母请求

方案二:仅允许单段路径(如/abc、/abc/)

同样通过RewriteRule模式限制,更简洁:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-z0-9]+)/?$ /folder/file.php?fldr=$1 [NC,L,QSA]
  • 模式^([a-z0-9]+)/?$仅匹配单个a-z0-9字符段,末尾斜杠可选

如果坚持使用REQUEST_URI条件验证,可采用以下写法(以允许多级路径为例):

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^/[a-z0-9]+(/[a-z0-9]+)*/?$ [NC]
RewriteRule ^([a-z0-9]+)/?(.*)$ /folder/file.php?fldr=$1 [NC,L,QSA]

内容的提问来源于stack exchange,提问作者Mm-Art-In

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 17:05:03