Mod rewrite Mod重写赢得';“不要去”;404找不到页面“;对于不存在的页面

Mod rewrite Mod重写赢得';“不要去”;404找不到页面“;对于不存在的页面,mod-rewrite,http-status-code-404,Mod Rewrite,Http Status Code 404,我有以下代码,非常有效: Options +FollowSymLinks RewriteEngine on RewriteRule ^([a-zA-Z0-9_-]+)/?$ index.php?mode=$1 [QSA] RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ index.php?mode=$1&productContent=$2 [QSA] 我的问题是,当我转到一个在我的网站上不存在的页面,即mysite.com/books

我有以下代码,非常有效:

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^([a-zA-Z0-9_-]+)/?$ index.php?mode=$1 [QSA]
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ index.php?mode=$1&productContent=$2 [QSA]

我的问题是,当我转到一个在我的网站上不存在的页面,即mysite.com/books时,我会收到以下警告错误:无法打开流:没有这样的文件或目录。有没有办法避免这个错误,让它改为“404页面未找到”?

你不能用Apache的mod_rewrite来处理这个问题,这是一个脚本错误,必须由代码处理,在你的例子中是php。

你知道我会怎么做吗?根据你的错误判断,你只需要检查
是否(文件存在($file))
如果没有,则将用户重定向到404页面。如果您在代码中没有做好错误检查,您可能会在之后遇到另一个错误,但可能不会,但通常您只需要捕获错误并执行
标题('Location:your-404-page.php');死亡。在调用
header()
函数之前,请确保页面上没有输出,否则它将中断,否则您将需要查找
ob_start()
ob_ob_end_flush()
还请注意,许多框架具有显示错误消息的调试模式,而不是正常的404页面。您必须关闭调试模式才能查看自定义的404、500等。