我的网站需要一个.htaccess
文件,当找不到网页时,该文件会将用户重定向到index.php
。但是,我不希望Apache在文档中发送404标头。
我之前问了这个问题: Apache .htaccess 404 error redirect
命令"ErrorDocument /index.php"
产生我想要的确切效果,除了它向页面发送404标题。我能做什么?我应该用PHP覆盖404标题吗?
答案 0 :(得分:8)
将其添加到您的.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]
如果重定向到index.php,您可以使用$_SERVER["REQUEST_URI"]
内的index.php
- ' - d'(是目录)将TestString视为路径名并测试是否 它存在并且是一个目录。
- ' - f'(是常规文件)将TestString视为路径名并测试是否 它存在并且是常规文件。
- ' - s'(是带有大小的常规文件)将TestString视为路径名 并测试它是否存在并且是一个 大小超过的常规文件 零。
- ' - l'(是符号链接)将TestString视为路径名并测试是否 它存在并且是一种象征性的联系。
- ' - F'(通过子请求是现有文件)检查TestString是否为a 有效的文件,可通过所有 服务器当前配置的访问权限 控制该路径。这用了 内部子请求确定 检查,因此请小心使用它 降低服务器性能!
- ' - U'(通过子请求是现有的URL)检查TestString是否为 有效的URL,可通过所有访问 服务器当前配置的访问权限 控制该路径。这用了 内部子请求确定 检查,因此请小心使用它 降低服务器的性能!
更多信息:http://httpd.apache.org/docs/current/mod/mod_rewrite.html