1

我正在尝试将不存在的网页重定向到我的 index.php。

我用这些数据在与我的 index.php 相同的文件夹中创建了一个 .htaccess 文件。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR]
Rewritecond %{REQUEST_FILENAME} -d

RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

我正在使用 Wampserver 并且 apache 服务器的 httpd.conf 设置为

允许覆盖所有

但是当我尝试输入一个不存在的网页时,我仍然收到 404 错误。任何想法?

编辑。顺便说一句,我在这里看到了这篇文章并尝试了那里的东西,但它对我不起作用。

4

1 回答 1

4

为什么不直接使用 ErrorDocument 指令?

ErrorDocument 404 index.php

它更简单,并且开销更少。

如果你坚持使用mod_rewrite,你可以使用德摩根定律,并且不关心页面确实存在的情况:无论如何它都会正常服务,你不需要做显式的RewriteRule ^.*$。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-s
RewriteCond %{REQUEST_FILENAME} !-l
Rewritecond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php [NC,L]

也就是说,我认为您发布的代码段应该可以工作。我对 Wampserver 一点也不熟悉,但似乎你必须明确启用 mod_rewrite 模块,你做到了吗?

此外,将不存在的页面重定向到 index.php,而不向机器人或用户表明该页面不存在,这不是一个好主意。带有指向有效页面的链接的漂亮错误页面将是更好的选择。

于 2012-05-24T16:12:01.883 回答