htaccess 404页面重定向不适用于子目录路径

时间:2015-07-29 10:46:11

标签: regex apache .htaccess mod-rewrite redirect

ErrorDocument 404 /404-error.php

如果www.example.com/about不存在,则会在about之类的访问时完全重定向到404页面。但是当我访问www.example.cpm/page/test时,不会重定向到404页面。

实际上有一个名为'page'的页面,www.example.cpm/page/test不存在。它应该重定向到404页面。

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\s([^.]+)\.php [NC]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_FILENAME}.php [L]

RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

ErrorDocument 404 /404-error.php
ErrorDocument 500 /404-error.php

1 个答案:

答案 0 :(得分:1)

您的404处理程序已找到,但问题是您添加.php扩展名的重写规则。 <{1}} RewriteCond %{REQUEST_FILENAME}.php -f即使只找到/page/test也会返回true。

你的规则如下:

/page.php