В любом случае, чтобы использовать PHP для проверки значения AllowOverride
также AllowOverride
будет ли эффект .htaccess
иметь какой-либо эффект?
Я не знаю о чистом, прямом способе сделать это.
Если у вас есть http-доступ к папке, для которой вы хотите проверить это, вы можете написать что-то в файле .htaccess, который будет вызывать определенный вид вывода.
Например, вы можете установить заголовок (это имеет добавленную зависимость от mod_headers
, хотя):
<FilesMatch "\.(php)$"> <IfModule mod_headers.c> Header set htaccess_works "yes" </IfModule> </FilesMatch>
затем выполните запрос от PHP и проверьте заголовки ответов, например, с помощью curl
CURLOPT_HEADER
. Если они содержат заголовок htaccess_works
, он работает.
Другой метод, который ужасен, но гарантированно работает независимо от конкретных модулей Apache, – это программно писать тарабарщину в файл .htaccess
, затем делать запрос на завивание, как указано выше, и проверять код состояния 500
. Если он выбрасывает 500, файл .htaccess интерпретируется. Но, как сказано, это ужасно – если возможно, идите с помощью метода заголовков.
В дополнение к ответу @Pekka:
AllowOverride может быть установлен на None или All , но также на определенный список терминов: AuthConfig , FileInfo , Indexes , Limit , Options . Таким образом, вам может быть разрешено использовать команду Header, но не Deny, например.
Таким образом, способ проверить реальное значение AllowOverride заключается в том, чтобы добавить это в ваш .htaccess:
#AuthConfig AuthName "Secret" #FileInfo ErrorDocument 404 index.php #Indexes DefaultIcon /icon/unknown.xbm #Limit Allow From All #Options Options FollowSymLinks
Тогда, если у вас есть 500 строк комментариев ошибок, чтобы определить, какие слова (разделы) запрещены. Вы получите ошибку 500, пока не удалите каждую запрещенную инструкцию. Когда вы узнаете разрешенные разделы, вам нужно будет проверить документацию для полного списка разрешенных инструкций.
Если у вас нет какой-либо ошибки, у вас есть AllowOverride None или All. Затем измените параметр «Запретить / Разрешить»:
Deny From All
Если у вас есть результат 403, это AllowOverride All.
Самый простой способ
Добавить: show-error в первой строке на вашей странице загружает домен через браузер, чтобы вызвать ошибку 50x
Другой метод, который ужасен, но гарантированно работает независимо от конкретных модулей Apache, – это программно писать тарабарщину в файл .htaccess, затем делать запрос на завивание, как указано выше, и проверять код состояния 500. Если он выбрасывает 500, файл .htaccess интерпретируется. Но, как сказано, это ужасно – если возможно, идите с помощью метода заголовков.