如何使用htaccess隐藏php文件扩展名?

问题描述

RewriteRule ^site/index$ site/index.PHP [NC,L]

此行确实成功隐藏了扩展名。现在,我不希望访问带有扩展名的页面;如果尝试使用扩展名访问该页面,则该页面必须显示错误。只有隐藏了扩展名的扩展名才能访问。

解决方法

它必须显示一个错误。

要在访问/site/index.php时返回403禁止访问,您可以在现有重写之前先执行以下

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^site/index\.php$ - [F]

为了防止重写的URL也触发403,必须检查REDIRECT_STATUS的条件。

但是,改为重定向/更正此类请求会更加适合SEO。

旁边:

此行确实成功隐藏了扩展名。

我想只是措辞,但“此行”并没有“隐藏”任何内容。它专门将扩展名添加回去。 (该扩展名已隐藏在初始请求中。)

,

@MrWhite提供了一个答案,该答案显示了如何按照您的要求抛出错误消息,但是为什么要抛出错误消息而不是仅仅将example.com/page.php重定向到example.com/page?这是.htaccess的代码:

RewriteEngine on
RewriteRule ^(.+)\.php$ /$1 [R,L]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ /$1.php [NC,END]

这可确保/page/page.php都转到相同的URL(/page),并提供相同的页面/文件(/page.php