使用.htaccess配置URL重写出现404错误的求助
问题解决方法
你的规则存在两个核心问题,直接导致了404错误:
- 条件判断用错了变量:
%{DOCUMENT_ROOT}是服务器的文档根目录路径,无法正确判断当前请求的something是不是真实存在的文件 - 重写目标用了绝对根路径
/default.php,这会跳转到网站根目录下的default.php,而非link子文件夹内的文件
修正后的link子文件夹.htaccess规则如下:
RewriteEngine On # 检查请求路径不是真实存在的文件 RewriteCond %{REQUEST_FILENAME} !-f # 检查请求路径不是真实存在的目录 RewriteCond %{REQUEST_FILENAME} !-d # 将请求内容作为id参数转发到当前文件夹的default.php RewriteRule ^(.+)$ default.php?id=$1 [L,QSA]
关键说明:
%{REQUEST_FILENAME}:对应当前请求的文件/目录完整服务器路径,能准确判断请求内容是否为真实存在的资源- 新增
!-d条件:避免真实存在的目录被错误重写 - 重写目标用
default.php(不带开头的/):因为.htaccess在link文件夹内,相对路径会自动指向该文件夹下的文件,不会跳转到网站根目录
现在访问domain.com/link/something,就能正确转发到domain.com/link/default.php?id=something了。
内容的提问来源于stack exchange,提问作者SanChamp
相关产品推荐
相关产品推荐

