我的网站需要一个.htaccess文件,index.php当用户找不到页面时,该文件会将用户重定向到该文件.但是,我不希望Apache向文档发送404标头.
我之前问过这个问题: Apache .htaccess 404错误重定向
该命令"ErrorDocument /index.php"产生我想要的确切效果,除了它向页面发送404标头.我能做什么?我应该用PHP覆盖404标头吗?
将其添加到您的.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]
Run Code Online (Sandbox Code Playgroud)
如果重定向到index.php,你可以通过$_SERVER["REQUEST_URI"]内部使用获得请求的uriindex.php
- '-d'(is directory)将TestString视为路径名,并测试它是否存在并且是一个目录.
- '-f'(是常规文件)将TestString视为路径名并测试它是否存在并且是常规文件.
- '-s'(是带有大小的常规文件)将TestString视为路径名并测试它是否存在并且是一个大小大于零的常规文件.
- '-l'(是符号链接)将TestString视为路径名并测试它是否存在并且是符号链接.
- '-F'(通过子请求是现有文件)检查TestString是否是有效文件,并可通过该路径的所有服务器当前配置的访问控制进行访问.这使用内部子请求来确定检查,因此请小心使用它,因为它会降低服务器性能!
- '-U'(通过子请求是现有URL)检查TestString是否是有效的URL,并且可以通过该路径的所有服务器当前配置的访问控制进行访问.这使用内部子请求来确定检查,因此请小心使用它,因为它会降低服务器的性能!
更多信息:http://httpd.apache.org/docs/current/mod/mod_rewrite.html
编辑:请注意这篇文章:https://stackoverflow.com/questions/486505/mod-rewrite-with-godaddy