.htaccess - 将 .htaccess 指向文件

标签 .htaccess

我正在开发一个开源项目。我不知道该项目将安装在最终用户的哪个目录中。我需要向为我的项目创建的 .htaccess 文件添加规则,以便 404 错误和其他错误指向我的项目根目录中的特定文件。安装脚本在名为“setup”的文件夹中调用,与根文件夹相关,例如 root/setup/index.php。

我用来将 404 从根目录中的 .htaccess 定向到 errorcode.php(也在根文件夹中)的路径是这样的:

$installURL = "http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['SCRIPT_NAME']);
$save= $installURL;
$str = str_replace( '/setup', '', $save ); //remove /setup/
$installURL= $str ;

然后我打开 .htaccess 文件并制定如下规则:

$fp = fopen("../.htaccess", "a");
fwrite($fp, "\n\n# ErrorDocuments \n");
fwrite($fp, "ErrorDocument 400 ". $installURL."/errorcode.php?error=400 \n");

有一个针对所有 400 HTTP header 的规则列表。

这对我来说已经工作了大约一个月了。今天,我开始收到服务器错误,日志文件显示以下内容:

[Thu Oct 04 11:56:59 2012] [notice] cannot use a full URL in a 401 ErrorDocument directive --- ignoring!
[Thu Oct 04 11:56:59 2012] [alert] [client 127.0.0.1] C:/wamp/www/Project-BlackHawk/.htaccess: Unsupported HTTP response code 428, referer: http://localhost/Project-BlackHawk/setup/index.php

我的问题是,我是否应该使用这样的东西作为 ErrorDocument 的路径:

$installURL = dirname($_SERVER['SCRIPT_NAME']);
$save= $installURL;
$str = str_replace( '/setup', '', $save ); //remove /setup/
$installURL= $str ;

最佳答案

听起来您需要从 ErrorDocument 指令中删除 http://localhost 部分。因此,$_SERVER['SCRIPT_NAME'] 可能会为您执行此操作,$_SERVER['REQUEST_URI'] 也会这样做。

关于.htaccess - 将 .htaccess 指向文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12756809/

相关文章:

Wordpress 永久链接更改导致首页 404

http - 使用 .htaccess 在 HTTP 和 HTTPS 之间正确切换

.htaccess 重定向后隐藏子目录 url

php - 重写规则中的条件第二个查询

apache - vi中的^@字符是什么?

php - Css、图像和 js 在 .htaccess 文件中不起作用

php - Apache Web 服务器配置给出 404 错误消息

drupal - 当安装位于关联的子目录中时,如何从 Drupal 7 中的 URL 中删除/drupal

php - 使用 .htaccess 绕过 Zend Framework 并在子目录中运行不同的框架

wordpress - htaccess 将传入链接重写为新链接