簡體   English   中英

htaccess 404 頁面重定向不適用於子目錄路徑

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM