2012-04-27 67 views
2

如标题所示我在寻找一个PHP函数来检查您的服务器上是否可以使用.htaccess文件。php脚本(函数)检查服务器上是否允许.htaccess

我应该测试什么?

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

选项2: 如果检查出 “的AllowOverride无” 在 'httpd.conf中' 呈现。

谢谢你的建议,代码将有助于太;)

+0

看看http://stackoverflow.com/questions/3772892/phpinfo-mod-rewrite – 2012-04-27 06:38:32

+1

检查mod_rewrite是没有帮助的。你可以让它没有安装,但仍然有.htaccess文件。 – Nadh 2012-04-27 06:41:57

+0

检查您的网络主机文档。如果您有.htaccess重写功能,我访问过/研究过的每个主机都会通知您。如果他们不宣传这是一种好处,那么机会很可能(因为现在大多数人都想要这种特权),他们不提供这种特权作为特征 – 2012-04-27 07:16:57

回答

4

创建你的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"; 
} 
?> 
+0

你可以把这个想法代码? – 2012-04-27 07:06:09

+0

我已经更新了答案 – Ahatius 2012-04-27 07:20:58

+0

至少在使用mod_php时,您也可以使用'virtual()'来执行(假的)http请求。 – ThiefMaster 2012-04-27 07:31:20

10

在.htaccess,简单地说是这样的:

SetEnv HTACCESS on 

然后,在你的PHP脚本,寻找它在$ _ SERVER:

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

@Mickle所以基本上你可以放任何东西并检查它是否设置了?比如:'SetEnv SomeVariable on',然后检查是否设置了$ _SERVER ['SomeVariable']'?顺便说一句,而不是'!isset'使用'empty'。 '!isset'将不起作用。 – 2012-05-10 14:05:15

+3

你为什么认为!isset()不起作用?迄今为止,它对我来说非常合适。正如你所说,在这种情况下,可以用空来代替。 – Micke 2012-05-14 08:27:54

相关问题