如何正确重写我的 URL 以提供正确的 404 页面?



我当前的 .htaccess mod_rewrite配置有问题。

这是我当前的代码:

RewriteRule ^([^/]*)/([^/]*)/$ /game.php?id=$1&title=$2 [L]
RewriteRule ^([^/]*)/$ /index.php?page=$1 [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/$ /category.php?cid=$1&page=$2&title=$3 [L]

上面的代码正确地重写了我的 URL。但是,每当我在浏览器中输入一个不存在的目录时,例如,http://www.example.com/non-existent-directory/我的主页显示,而不是我设置的 404 页面。

另一个注意事项是,尾随斜杠似乎使一切变得不同。如果我从 URL 中删除尾部斜杠,即 http://www.example.com/non-existent-directory 404 页面正确显示。如果我添加它,我的主页会出现,而不是 404 页面。

有谁知道我需要做什么才能重写我的 URL,但在我键入不存在的目录时还要显示 404 页面?

提前谢谢你。

这是ErrorDocument的方向;虽然也可以去掉尾部斜杠:

# Rewrites
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# remove trailing slash
RewriteRule ^(.*)/(?.*)?$ $1$2 [R=301,L]
...
</IfModule>
# HTTP Errors
ErrorDocument 404 /index.php?controller=frontend&method=error&id=404

最新更新