Ошибка с .htaccess и mod_rewrite
Я пытаюсь разместить php-приложение со следующими значениями .htaccess.
Options +FollowSymLinks
Options -Indexes
DirectoryIndex index.php
RewriteEngine On
RewriteBase /easydeposit
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Однако, я продолжаю сталкиваться с двумя следующими ошибками:
[access_compat:error] [pid 25330:tid 27] AH01797: client denied by server configuration: /home/abc/opt/apache/htdocs/xyz/system/
[access_compat:error] [pid 25330:tid 27] AH01797: client denied by server configuration: /home/abc/opt/apache/htdocs/xyz/private/
[access_compat:error] [pid 25330:tid 27] AH01797: client denied by server configuration: /home/abc/opt/apache/htdocs/xyz/application/
[authz_core:error] [pid 25330:tid 27] AH01630: client denied by server configuration: /home/abc/opt/apache/htdocs/xyz/.htaccess
Я не уверен, почему это происходит. Любая помощь приветствуется.
Ответы
Ответ 1
Если вы недавно обновили версию Apache больше версии 2.2, ошибка error authz_core может возникать из вашего файла httpd.conf или httpd-vhosts.conf в тегах <Document>
. mod_authz_core был введен в Apache 2.3 и изменил способ объявления контроля доступа.
Так, например, вместо 2.2 способа настройки <Directory>
...
<Directory "C:/wamp">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Заказ и Разрешить были заменены директивой Требовать:
<Directory "C:/wamp">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Источники
http://www.andrejfarkas.com/2012/06/fun-with-wamp-server-and-apache-2-4-2/ http://httpd.apache.org/docs/2.4/upgrading.html
Ответ 2
Я сомневаюсь, что это имеет какое-либо отношение к вашему файлу htaccess. Ошибки вызывают mod_access_compat, который предоставляет директивы Allow
, Deny
, Order
и Satisfy
. Где-то у вас, вероятно, есть разрешение и запрет настроены неправильно. Что касается ошибки .htaccess в конце, то она от mod_authz_core, так что может быть что-то вверху, которое блокирует доступ к файлам .htaccess прямо.
Ответ 3
Этот вопрос/ответ привлек меня к документации, за что я благодарен, но вот что я решил для меня.
Предыдущий .htaccess
файл:
# password protection allowing multiple resources
AuthType Basic
AuthName "Restricted Area"
AuthUserFile C:\path\to\.htpasswd
AuthGroupFile /dev/null
Require valid-user
# allow public access to the following resources
SetEnvIf Request_URI "(path/to/public_files/.*)$" allow
# these lines must be updated
Order allow,deny
# Allowing an ip range:
Allow from 69.69.69
# Allowing another range:
Allow from 71.71.71
Satisfy any
Эта конфигурация создавала ошибки, такие как:
[Thu Dec 08 10: 29: 20.347782 2016] [access_compat: error] [pid 2244: tid 15876] [клиент 93.93.93.93:49340] AH01797: клиент отказался от конфигурации сервера: C:/path/to/index.php
обновлен для конфигурации 2.4
# 7 lines unchanged...shown again for clarification
AuthType Basic
AuthName "Restricted Area"
AuthUserFile C:\path\to\.htpasswd
AuthGroupFile /dev/null
Require valid-user
SetEnvIf Request_URI "(path/to/public_files/.*)$" allow
# these are the changes replacing:
# Order allow,deny
# Allow from <range>
# Satisfy any
Require ip 69.69.69
Require ip 71.71.71
Require all granted
Ответ 4
Вы уверены, что вам разрешено переопределять параметры в вашем файле .htaccess? проверьте главный файл конфигурации apache для этого
Ответ 5
Options +FollowSymLinks
Options -Indexes
на многих общих хостингах вышеприведенный код часто являются основными проблемами
Ответ 6
И вы абсолютно уверены, что пользователь apache (возможно, _www) имеет доступ к каталогу (/home/abc/opt/apache/htdocs/xyz/
)?
Ответ 7
Другой пример: перепишите из:
www.yoursite.com/script.php?product=123
to
www.yoursite.com/cat/product/123/
используя
RewriteRule cat/(.*)/(.*)/$ /script.php?$1=$2
http://w3webtutorial.blogspot.com/2013/11/htaccess-and-modrewrite-in-your-php.html