重写规则 ^.*$ 索引.php [NC,L].



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

我在与索引相同的文件夹中创建了一个 .htaccess 文件.php使用此数据。

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 错误。知道吗?

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

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

ErrorDocument 404 index.php

它简单得多,开销也少得多。

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

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

也就是说,我认为您发布的片段应该有效。我根本不熟悉Wampserver,但似乎您必须显式启用mod_rewrite模块,您是否这样做了?

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

最新更新