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

Hostinger主机下.htaccess的RewriteRule无法去除PHP后缀求助

解决Hostinger主机下URL隐藏.php后缀且页面链接不跳转回.php的问题

问题核心

需要实现:

  1. 访问website/leistungen时,实际加载leistungen.php,地址栏保持无.php后缀
  2. 访问website/leistungen.php时,自动301重定向到website/leistungen
  3. 页面内的链接点击后,地址栏不会出现.php后缀

正确的.htaccess规则

将以下代码放在网站根目录(如public_html)的.htaccess文件中:

RewriteEngine On

# 1. 重定向带.php的URL到无后缀版本(仅针对实际存在的.php文件)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)\.php$ /$1 [L,R=301]

# 2. 内部映射无后缀请求到对应的.php文件(仅针对不存在的文件/目录)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/.]+)$ $1.php [NC,L]

规则说明

  • 重定向规则优先执行:确保所有带.php的请求(无论直接访问还是旧链接)都被永久重定向到无后缀版本,避免重复内容,同时修正地址栏显示。
  • 内部映射规则:当用户访问无后缀路径时,服务器内部加载对应的.php文件,浏览器地址栏不会变化。
  • 条件!-d和!-f用于排除实际存在的文件和目录,避免干扰静态资源(如图片、CSS)和真实目录的访问。

页面链接修正

必须确保页面内所有<a>标签使用无后缀路径,示例:

  • 同目录下的链接:<a href="leistungen">Leistungen</a>
  • 网站根目录下的链接:<a href="/leistungen">Leistungen</a>

如果链接仍写为leistungen.php,即使有重定向规则,点击时也会先跳转到.php地址再被重定向,导致地址栏短暂显示后缀,必须统一改为无后缀路径。

Hostinger主机额外注意事项

  1. 确认.htaccess文件放置在网站根目录(通常是public_html文件夹),而非子目录。
  2. Hostinger默认开启mod_rewrite模块,若不确定可通过phpinfo()页面确认。
  3. 清除浏览器缓存:301重定向会被浏览器缓存,之前的错误跳转记录可能残留,需手动清除缓存后测试。

内容的提问来源于stack exchange,提问作者M. Carle

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 01:20:57