1

在我的.htaccess文件中,我有用於重寫網址的設置,例如http://www.myownwebsite.com/about.phphttp://www.myownwebsite.com/about/如何讓自定義403頁面和網址重寫的設置共存?

而且我也有自定義錯誤403和404頁的設置。

我遇到的問題是,當我直接測試訪問文件夾時,例如,http://www.myownwebsite.com/css/,而不是看到自定義403頁面,我看到自定義404頁面。我想這是因爲url重寫的設置覆蓋了自定義頁面的設置。

這裏是我的.htaccess文件相關的代碼:

ErrorDocument 403 /403.php 
ErrorDocument 404 /404.php 

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)/$ $1.php 
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$ 
RewriteRule (.*)$ /$1/ [R=301,L] 

我在做什麼錯?

回答

1

在將.php添加到您的URI之前,請確保存在相應的.php文件。

更好地保持重定向規則在其他規則之前。

有這樣的:

Options -MultiViews -Indexes 
ErrorDocument 403 /403.php 
ErrorDocument 404 /404.php 

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$ 
RewriteRule (.*)$ /$1/ [R=301,L] 

RewriteCond %{DOCUMENT_ROOT}/$1.php -f 
RewriteRule ^([^/]+)/$ $1.php [L] 

RewriteCond %{DOCUMENT_ROOT}/$1/$2.php -f 
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php [L] 
+1

我明白了。你的建議非常感謝。我會把重定向規則放在其他規則之前。 –