我想将所有“404”错误重定向到PHP文件。我使用Wordpress的.htaccess作为初始步骤。工作,但不是当路径是文件夹时,意味着,结尾有一个“/”,我得到一个禁止错误。
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /includes/redir.php [L]
如果我尝试:
http://example.com/anything
按预期工作,重定向到我的redir.php。但如果我尝试:
http://example.com/anything/
返回Forbidden错误。
我需要做些什么来重定向到redir.php所有不存在的东西? 我需要更改httpd.conf吗?我需要一个“ErrorDocument 404 /includes/redir.php”行吗?
答案 0 :(得分:1)
我需要一个“ErrorDocument 404 /includes/redir.php”行?
是的,使用这样的ErrorDocument
指令比尝试手动重定向/重写错误文档更为可取。
定义的ErrorDocument
将返回正确的HTTP状态代码(无需您手动执行此操作)。 PHP将在$_SERVER
超全局中设置与此错误相关的其他变量。
如果您特别想在404上重写文件,那么您可以执行以下操作:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ /includes/redir.php [L]
但不是当路径是文件夹时,意味着最后有一个“/”,我得到一个Forbidden错误。
除非URL映射到磁盘上的物理文件夹,否则URL“看起来”就像文件夹一样无关紧要。只有这样,如果没有目录索引文档,你会得到403 Forbidden。