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

Ubuntu 18.04下Apache自动添加末尾斜杠问题求助

Ubuntu 18.04下Apache自动添加末尾斜杠问题求助

看起来你碰到的是Apache默认的目录斜杠自动追加行为,这是mod_dir模块在背后起作用——它会自动检测请求的路径是否对应一个实际存在的目录,如果匹配就会触发301重定向,给路径加上末尾的斜杠,而且这个模块的优先级默认比mod_rewrite高,所以你的PHP重写规则还没生效,就先被它改了路径。

给你几个可行的解决方案,你可以一步步试:

方案一:在.htaccess中关闭自动追加斜杠

直接在你的.htaccess里添加DirectorySlash Off来禁用mod_dir的这个行为,同时可以补充规则处理真实目录的访问(可选,如果你需要目录也能正常打开):

RewriteEngine On
DirectorySlash Off

# 可选:如果请求的是真实存在的目录,手动添加斜杠(保持目录访问的正常逻辑)
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ $1/ [L]

# 你的PHP文件重写规则
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [L]

方案二:修改虚拟主机配置(更高效)

因为.htaccess是每个请求都会解析,而虚拟主机配置是全局生效的,你可以直接在虚拟主机的目录块里添加DirectorySlash Off:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/webtrade

    <Directory /var/www/webtrade>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
        DirectorySlash Off  # 关闭自动追加斜杠
    </Directory>

    # 其他原有配置...
</VirtualHost>

修改完记得重启Apache生效:

sudo systemctl restart apache2

额外注意点

如果你的Apache启用了mod_negotiation(也就是配置里的MultiViews选项),它可能也会干扰重写逻辑。如果不需要这个功能,可以把MultiViews从Options里去掉,或者改成MultiViews Off。

如果试了上面的方法还是不行,建议去看Apache的错误日志(路径一般是/var/log/apache2/error.log),里面的日志信息能帮你更快定位问题~

备注:内容来源于stack exchange,提问作者Andrei Claudiu Viziru

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 13:49:39