2012-04-27 70 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

相關問題