[英]htaccess 404 page redirect not working for sub directory path
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
您的 404 處理程序已找到,但問題是您添加.php
擴展名的重寫規則。 RewriteCond %{REQUEST_FILENAME}.php -f
為/page/test
返回 true,即使只找到/page.php
。
有這樣的規則:
ErrorDocument 404 /404-error.php
ErrorDocument 500 /404-error.php
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=302,L]
RewriteCond %{THE_REQUEST} ^(?:GET|HEAD)\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^.]+?)/?$ $1.php [L]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.