如标题所示我在寻找一个PHP函数来检查您的服务器上是否可以使用.htaccess文件。php脚本(函数)检查服务器上是否允许.htaccess
我应该测试什么?
选项1: 也许如果mod_rewrite模块安装?
选项2: 如果检查出 “的AllowOverride无” 在 'httpd.conf中' 呈现。
谢谢你的建议,代码将有助于太;)
如标题所示我在寻找一个PHP函数来检查您的服务器上是否可以使用.htaccess文件。php脚本(函数)检查服务器上是否允许.htaccess
我应该测试什么?
选项1: 也许如果mod_rewrite模块安装?
选项2: 如果检查出 “的AllowOverride无” 在 'httpd.conf中' 呈现。
谢谢你的建议,代码将有助于太;)
创建你的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";
}
?>
你可以把这个想法代码? – 2012-04-27 07:06:09
我已经更新了答案 – Ahatius 2012-04-27 07:20:58
至少在使用mod_php时,您也可以使用'virtual()'来执行(假的)http请求。 – ThiefMaster 2012-04-27 07:31:20
在.htaccess,简单地说是这样的:
SetEnv HTACCESS on
然后,在你的PHP脚本,寻找它在$ _ SERVER:
if (!isset($_SERVER['HTACCESS'])) {
// No .htaccess support
}
@Mickle所以基本上你可以放任何东西并检查它是否设置了?比如:'SetEnv SomeVariable on',然后检查是否设置了$ _SERVER ['SomeVariable']'?顺便说一句,而不是'!isset'使用'empty'。 '!isset'将不起作用。 – 2012-05-10 14:05:15
你为什么认为!isset()不起作用?迄今为止,它对我来说非常合适。正如你所说,在这种情况下,可以用空来代替。 – Micke 2012-05-14 08:27:54
看看http://stackoverflow.com/questions/3772892/phpinfo-mod-rewrite – 2012-04-27 06:38:32
检查mod_rewrite是没有帮助的。你可以让它没有安装,但仍然有.htaccess文件。 – Nadh 2012-04-27 06:41:57
检查您的网络主机文档。如果您有.htaccess重写功能,我访问过/研究过的每个主机都会通知您。如果他们不宣传这是一种好处,那么机会很可能(因为现在大多数人都想要这种特权),他们不提供这种特权作为特征 – 2012-04-27 07:16:57