404错误未按预期显示

时间:2016-07-29 16:57:24

标签: php apache .htaccess mod-rewrite http-status-code-404

我手边有一个项目,但遇到了错误。

我有RewriteRule将index.php?view=$1重定向到/。但是,当我访问应该导致404错误的URL时,它会显示主页(index.php)。

ErrorDocument 404 /pages/errors/error_redirect.php
ErrorDocument 500 /pages/errors/error_redirect.php

Options +FollowSymlinks
RewriteEngine On
RewriteBase /

<FilesMatch "\.tpl$">
    Order Allow,Deny
    Deny from all
</FilesMatch>

RewriteCond %{REQUEST_URI} ^/404/$
RewriteRule ^(.*)$ /pages/errors/404.php [L]

RewriteCond %{REQUEST_URI} ^/500/$
RewriteRule ^(.*)$ /pages/errors/500.php [L]

RewriteCond %{REQUEST_FILENAME} !-l

# Rewrite all URLs to non-extension URLs 
RewriteRule ^(admin|user)($|/) - [L]
RewriteRule ^([A-Za-z0-9-_]+)$ /index.php?view=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [L]

我面临的问题是,如果我输入http://localhost/asdasdads,浏览器会将我引导至http://localhost/,而不是浏览器中的未更改的URL,而是显示index.php的浏览器。它应该显示404错误页面。

我相信RewriteRule ^([A-Za-z0-9-_]+)$ /index.php?view=$1 [L]是这个问题的根源。由于找不到,它会将/index.php?view=asdasdads重定向到/index.php?view=。我希望它改为重定向到404。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

Aizat,尝试删除不必要的重写条件,并试一试:

设置404错误页面的最简单方法是直接在 .htaccess文件 中设置404错误消息:

  

ErrorDocument 404 /404.php