Вопрос по mod-rewrite, .htaccess, php – PHP скрипт (функция), чтобы проверить, разрешен ли .htaccess на сервере

4

Как видно из заголовка, я ищу функцию PHP, чтобы проверить, можете ли вы использовать файл .htaccess на вашем сервере.

Что я должен проверить?

Опция 1: Maybe if mod_rewrite module is installed ?

Вариант 2: Проверьте, если & quot;AllowOverride None& Quot; представлены в & apos;httpd.conf& APOS ;.

Спасибо за ваши предложения, код тоже поможет;)

Проверка на mod_rewrite не поможет. Вы можете не устанавливать его, но при этом иметь файлы .htaccess. Nadh
Проверьте свою документацию веб-хостов. Каждый веб-хостер, которого я посетил / исследовал, уведомляет вас где-нибудь, если у вас есть возможность переписать .htaccess. Если они не рекламируют это как преимущество, то вероятны вероятности (поскольку большинство людей в наши дни хотят получить эту привилегию), они не предлагают это в качестве функции. JT Smith
@JTSmith Я пытаюсь написать функцию PHP, чтобы проверить это автоматически. Это часть моегоrequirements script проверить, включены ли все необходимые функции на сервере для полной функциональности приложения на каждом сервере. Ing. Michal Hudak

Ваш Ответ

2   ответа
11

В .htaccess просто поместите что-то вроде:

SetEnv HTACCESS on

Затем в вашем PHP-скрипте найдите его в $ _SERVER:

if ( !isset($_SERVER['HTACCESS']) ) {
  // No .htaccess support
}
Как вы думаете, почему isset () не будет работать? До сих пор это отлично сработало. В этом случае, как вы говорите, вместо этого можно использовать пустой.
@Mickle Так что в принципе вы можете положить туда что-нибудь и проверить, включено ли это? лайк:SetEnv SomeVariable on а затем проверьте, если$_SERVER['SomeVariable'] установлен? Кстати вместо!isset использованиеempty. !isset не будет работать. Ing. Michal Hudak
5

напишите в него перенаправление для некоторого файла, а затем вызовите файл и проверьте, перенаправлен ли он. Должен быть одним из основных способов проверить, работает ли .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
@ing. Михал Худак. Вам действительно нужно немного разобраться, вы не можете просто опубликовать какую-то проблему и ожидать, что все напишут весь код для вас.
Вы можете поместить эту идею в код? Ing. Michal Hudak

Похожие вопросы