【问题标题】:php script(function) to check if .htaccess is allowed on serverphp脚本(函数)检查服务器上是否允许.htaccess
【发布时间】:2012-05-10 18:09:48
【问题描述】:

正如标题所说,我正在寻找一个 PHP 函数来检查您是否可以在您的服务器上使用 .htaccess 文件。

我应该测试什么?

选项 1: 也许如果安装了 mod_rewrite 模块?

选项 2: 检查“httpd.conf”中是否显示“AllowOverride None”。

感谢您的建议,代码也会有所帮助;)

【问题讨论】:

  • 检查 mod_rewrite 无济于事。您可以不安装它,但仍然有 .htaccess 文件。
  • 检查您的网络主机文档。如果您具有 .htaccess 重写功能,我访问过/研究过的每个网络主机都会在某处通知您。如果他们不将其宣传为一种好处,那么很可能(因为现在大多数人都想要这种特权)他们不会将其作为一项功能提供
  • @JTSmith 我正在尝试编写一个 PHP 函数来自动检查这一点。这是我的 requirements 脚本 的一部分,用于检查是否在服务器上启用了所有必要的功能,以在每个服务器上实现应用程序的全部功能。

标签: php .htaccess mod-rewrite


【解决方案1】:

在 .htaccess 中,简单地输入如下内容:

SetEnv HTACCESS on

然后,在您的 PHP 脚本中,在 $_SERVER 中查找它:

if ( !isset($_SERVER['HTACCESS']) ) {
  // No .htaccess support
}

【讨论】:

  • @Mickle 所以基本上你可以放任何东西并检查它是否设置好?比如:SetEnv SomeVariable on,然后检查是否设置了$_SERVER['SomeVariable']?顺便说一下,不要使用!isset,而是使用empty!isset 将不起作用。
  • 为什么你认为 !isset() 不起作用?到目前为止,它对我来说非常有效。不过,在这种情况下,可以使用 empty,如您所说。
【解决方案2】:

使用您的 php 脚本创建一个 .htaccess 文件,将某个文件的重定向写入其中,然后调用该文件并检查它是否被重定向。应该是检查 .htaccess 是否有效的最基本方法之一。

编辑:未测试

<?php
$html1 = "test.html";
$html2 = "test2.html";
$htaccess = ".htaccess";
$string1 = "<html><head><title>Hello</title></head><body>Hello World</body></html>";
$string2 = "<html><head><title>Hello</title></head><body>You have been redirected</body></html>";
$string3 = "redirect 301 /test.html /test2.html";
$handle1 = fopen($html1, "w");
$handle2 = fopen($html2, "w");
$handle3 = fopen($htaccess, "w");

fwrite($handle1, $string1);
fwrite($handle2, $string2);
fwrite($handle3, $string3);

$http = curl_init($_SERVER['SERVER_NAME'] . "/test.html");
$result = curl_exec($http);
$code = curl_getinfo($http, CURLINFO_HTTP_CODE);

if($code == 301) {
    echo ".htaccess works";
} else {
    echo ".htaccess doesn't work";
}
?>

【讨论】:

  • 至少在使用 mod_php 时,您还可以使用virtual() 来执行(假)http 请求。
  • @ThiefMaster 如何伪造该 http 请求? (示例代码)请
  • @ing。 Michal Hudak 你真的需要开始弄清楚一些事情,你不能只是发布一些问题并期望每个人都为你编写整个代码。
  • @Ahatius 我正在自行设置功能。不要求整体解决问题。我以前从未使用过virtual() 函数。我知道语法,但不知道如何与curl() 一起使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-16
  • 1970-01-01
  • 1970-01-01
  • 2011-11-10
  • 2014-03-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多