在htaccess中重写URL后没有404

时间:2013-11-16 16:11:34

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

重写所有我的网址规则后,传递的所有内容都被视为重写规则,这导致没有404页面!如何为未找到的页面提供404页面,即example.com/books被重写为url,这很好。但是example.com/dfersfn不是,但这也是提供的,并且发送了404。下面是我的htaccess的内容:

RewriteEngine on
RewriteRule \.(css|jpe?g|gif|png|js|ico|svg)$ - [L]
RewriteCond %{REQUEST_URI} "/f1/" [OR]
RewriteCond %{REQUEST_URI} "/f2/" [OR]
RewriteCond %{REQUEST_URI} "/f3/"
RewriteRule (.*) $1 [L]
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteCond %{REQUEST_URI} ^/(.*?)/?$
RewriteCond %{DOCUMENT_ROOT}/%1.php -f
RewriteRule ^(.*?)/?$ /$1.php [L]
RewriteRule ^([A-Za-z0-9-]+)/?$ book.php?slug=$1 [NC,L]
RewriteRule ^([A-Za-z0-9-]+)/(.*)/? read.php?slug=$1&cslug=$2 [NC,L]

1 个答案:

答案 0 :(得分:1)

您需要在book.phpread.php脚本中执行此操作。当您检查数据库中的“slug”和“cslug”时,如果它们不存在,请让脚本本身通过以下方式返回404

header('HTTP/1.0 404 Not Found');

在这个SO问题中有更多信息:Why won't my PHP app send a 404 error?