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

我明白了。你的建议非常感谢。我会把重定向规则放在其他规则之前。 –