找不到htaccess 404中的问题?

时间:2011-08-23 13:01:02

标签: .htaccess http-status-code-404

如果找不到页面,我想重定向到错误页面。所以我在.htaccess文件中添加了这段代码。

# '404 Not Found' error
ErrorDocument 404 /index.php?p=error&code=404

但是当我测试它时,它不会重定向到index.php文件。

我的整个.htaccess文件代码在这里

#AuthName "Restricted Area" 
#AuthType Basic 
#AuthGroupFile /dev/null 
#require valid-user
#<Files "/site/captcha/">
#  Allow from all
#</Files> 

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine on 

## File paths are relative to the Document Root (/)
# '400 Bad Request' error
ErrorDocument 400 /index.php?p=error&code=400
# '404 Not Found' error
ErrorDocument 404 /index.php?p=error&code=404
# '403 Forbidden' error
ErrorDocument 403 /index.php?p=error&code=403
# '401 Unauthorized' error
ErrorDocument 401 /index.php?p=error&code=401
# '500 Internal Server Error' 
ErrorDocument 500 /index.php?p=error&code=500

############################# Pages ##########################################################

RewriteRule ^home/$ index.php [S=1]
RewriteRule ^home$ index.php [S=1]

</IfModule>

1 个答案:

答案 0 :(得分:0)

首先 - 将所有ErrorDocument指令移出<IfModule mod_rewrite.c> - 根本不需要。

现在它告诉Apache:“仅在启用mod_rewrite时才使用ErrorDocument”。

如果它现在不适合你,那么很可能实际上没有启用mod_rewrite。但是如果你将它们放在<IfModule mod_rewrite.c>块之外(就在它之前),那么它应该可以工作(只要.htaccess被Apache识别和处理):

#AuthName "Restricted Area" 
#AuthType Basic 
#AuthGroupFile /dev/null 
#require valid-user
#<Files "/site/captcha/">
#  Allow from all
#</Files> 

Options +FollowSymLinks

# '400 Bad Request' error
ErrorDocument 400 /index.php?p=error&code=400
# '404 Not Found' error
ErrorDocument 404 /index.php?p=error&code=404
# '403 Forbidden' error
ErrorDocument 403 /index.php?p=error&code=403
# '401 Unauthorized' error
ErrorDocument 401 /index.php?p=error&code=401
# '500 Internal Server Error' 
ErrorDocument 500 /index.php?p=error&code=500

<IfModule mod_rewrite.c>
  RewriteEngine on 
  # Pages
  RewriteRule ^home/?$ index.php [L]
</IfModule>

<强> P.S。 我还修改了你的重写规则:将它们组合成单一规则。