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

如何用域名相关URL路径替代%{REQUEST_FILENAME}?

解决.htaccess RewriteCond检查URL路径而非物理路径的问题

原规则失效的核心原因是%{REQUEST_FILENAME}指向服务器物理文件路径,新服务器的物理路径包含点(比如AlmaLinux环境下网站根目录可能带点结构),导致RewriteCond %{REQUEST_FILENAME} !\.条件不成立,规则无法触发。

要实现仅检查域名对应的URL路径是否不含点,直接用%{REQUEST_URI}替换%{REQUEST_FILENAME}即可,%{REQUEST_URI}代表客户端请求的URL路径(如/file/value),与服务器物理路径完全无关。

修改后的完整规则:

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

额外优化说明

如果你的需求只是确保file/后面的参数不含点,其实可以把第三个条件直接合并到RewriteRule的匹配模式里——原规则的捕获组([a-z0-9-]+)已经限制了参数只能是字母、数字和连字符,天然排除了点,这样可以简化规则:

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

内容的提问来源于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.11 14:52:34