URL含空格导致浏览器报文件未找到错误的配置求助
含空格路径的Apache站点迁移后文件未找到问题解决
物理文件夹路径包含空格(如/about us/contactus.php),浏览器访问时URL会自动转换为https://www.example.com/about%20us/contactus.php。在同版本Apache和PHP的旧服务器上运行正常,但迁移到新服务器后出现文件未找到错误;无空格的文件可正常访问,且.htaccess未做修改,需调整Apache或PHP配置。
解决方案
调整Apache的
AllowEncodedSlashes配置
默认情况下Apache的AllowEncodedSlashes为Off,会对URL中的编码字符进行解码,可能导致带空格的路径匹配失败。修改httpd.conf或对应虚拟主机配置文件,添加或修改:AllowEncodedSlashes NoDecode保存后重启Apache服务。
确认文件系统权限与路径正确性
检查新服务器上含空格的文件夹及文件权限,确保Apache运行用户(通常为www-data或apache)拥有读取权限:ls -ld "/about us" ls -l "/about us/contactus.php"若权限不足,使用
chown或chmod命令调整。检查PHP的
open_basedir限制
如果PHP配置了open_basedir,需确保包含带空格的目标文件夹路径,示例配置(根据实际路径调整):open_basedir = /var/www/html/:/about us/修改php.ini后重启Apache或PHP-FPM服务。
验证
.htaccess生效配置
确认新服务器虚拟主机的<Directory>段中设置了AllowOverride All,确保.htaccess规则正常生效:<Directory "/var/www/html"> AllowOverride All # 其他配置... </Directory>修改后重启Apache。
内容的提问来源于stack exchange,提问作者Karia
相关产品推荐
相关产品推荐

