Linux环境下.htaccess隐藏.php扩展名失效的解决求助
解决Linux环境下.htaccess隐藏PHP扩展名失效的问题
我之前也碰到过跨环境迁移后.htaccess规则失效的情况,你的代码逻辑本身没问题,但Linux下Apache对配置和权限的要求更严格,咱们一步步排查修复:
1. 修正.htaccess里的语法错误
你原来的代码里有个明显的语法问题,在保护.htaccess的段落中:
denying from all
要改成:
deny from all
这个小错误在Windows环境下可能被Apache宽松处理,但Linux下会导致规则解析失败,直接影响后续Rewrite规则的生效。
2. 确保mod_rewrite模块已启用
Linux下Apache默认通常没开启rewrite模块,执行以下命令启用并重启服务:
sudo a2enmod rewrite sudo systemctl restart apache2
3. 调整虚拟主机的AllowOverride配置
默认情况下,Apache虚拟主机配置里的AllowOverride可能设为None,这会直接忽略.htaccess文件的所有规则。你需要修改站点的虚拟主机配置文件(一般在/etc/apache2/sites-available/your-site.conf),找到对应站点的<Directory>段落,把AllowOverride None改成AllowOverride All:
<Directory /var/www/your-site-root/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>
修改后重启Apache生效:
sudo systemctl restart apache2
4. 检查.htaccess文件权限
Linux下文件权限不正确会导致Apache无法读取.htaccess,执行以下命令设置正确的权限:
sudo chmod 644 /var/www/your-site-root/.htaccess sudo chown www-data:www-data /var/www/your-site-root/.htaccess
(记得把/var/www/your-site-root/替换成你实际的网站根目录)
完成以上步骤后,你的Rewrite规则应该就能正常工作了,访问不带.php的URL会自动映射到对应的PHP文件。
内容的提问来源于stack exchange,提问作者Dev Tom
相关产品推荐
相关产品推荐

