重写所有我的网址规则后,传递的所有内容都被视为重写规则,这导致没有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]
答案 0 :(得分:1)
您需要在book.php
和read.php
脚本中执行此操作。当您检查数据库中的“slug”和“cslug”时,如果它们不存在,请让脚本本身通过以下方式返回404 :
header('HTTP/1.0 404 Not Found');
在这个SO问题中有更多信息:Why won't my PHP app send a 404 error?