htaccess 404 未发现问题?

发布于 2024-12-01 00:12:51 字数 1101 浏览 3 评论 0原文

如果找不到该页面,我想重定向到错误页面。所以我在 .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>

i want to redirect to the error page if the page is not found. so i have add this code in .htaccess file.

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

but when i test it will not redirect to index.php file.

my whole .htaccess file code is here

#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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我要还你自由 2024-12-08 00:12:51

首先 - 将所有 ErrorDocument 指令移出 - 根本没有必要这样做。

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

如果它现在对您不起作用,那么很可能 mod_rewrite 实际上并未启用。但是,如果您将它们放在 块之外(就在它之前),那么它应该可以工作(只要 .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>

PS< /强>
我还修改了您的重写规则:将它们连接在一起形成单个规则。

To start with -- move all ErrorDocument directives out of <IfModule mod_rewrite.c> -- there is no need at all for that.

Right now it tells Apache: "use ErrorDocument ONLY IF mod_rewrite is enabled".

If it does not work for you right now, then it is extremely likely that mod_rewrite is not actually enabled. But if you place them outside <IfModule mod_rewrite.c> block (just before it), then it should work (as long as .htaccess is recognised and processed by 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.
I have also modified your rewrite rules: jointed them together into single rule.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文