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

时间:2012-05-24 15:30:46

标签: apache .htaccess

我正在尝试将不存在的网页重定向到我的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设置为

  

AllowOverride All

但是当我尝试输入一个不存在的网页时,我收到404错误。 有什么想法吗?

EDIT。 顺便说一句,我看过这篇文章HERE并尝试了那里的东西,但它对我没用。

1 个答案:

答案 0 :(得分:3)

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

ErrorDocument 404 index.php

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

如果您坚持使用mod_rewrite,您可以使用De Morgan定律,并且在页面确实存在的情况下不关心它:无论如何它都会正常提供,您不需要执行显式的RewriteRule ^。 * $

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

那就是说,我认为您发布的片段应该有效。我根本不熟悉Wampserver,但似乎你必须明确enable the mod_rewrite module,你做过吗?

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