首页 > 解决方案 > Htaccess:删除 .php 并重定向到自定义 404 页面

问题描述

访问:

# Remove .php extension
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php

# Redirect to 404 if original request is .php
RewriteCond %{THE_REQUEST} "^[^ ]* .*?\.php[? ].*$"
RewriteRule .* - [L,R=404]

这有效,所有请求都重定向到自定义 404 页面,例如:

localhost/dashboard.html
localhost/dashboard.gg
localhost/dashboard.anything

但是 .php 重定向到默认的 404 页面而不是我的自定义 404 页面

localhost/dashboard.php => default 404 page by apache

我知道[R=404]中有一个错误,但我不知道如何修复它。有人会帮忙吗?

标签: .htaccess

解决方案


默认情况下 - [R=404],将未找到的请求重定向到 Web 托管服务提供商的默认错误页面。您可以使用自定义错误页面的 Uri 作为规则中的替换字符串来更改此行为。

# Redirect to 404 if original request is .php
RewriteCond %{THE_REQUEST} "^[^ ]* .*?\.php[? ].*$"
RewriteRule .* /my404.php  [L,R]

推荐阅读