Ошибка с .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 

Я не знаю, почему это происходит. Любая помощь приветствуется.

Если вы недавно обновили версию 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> 

Директивы Order и Allow были заменены директивой Require :

  <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

Я сомневаюсь, что это имеет какое-либо отношение к вашему файлу htaccess. Ошибки вызывают mod_access_compat , который предоставляет директивы Allow , Deny , Order и Satisfy . Где-то у вас, вероятно, неправильная настройка allow и deny. Что касается ошибки .htaccess в конце, это от mod_authz_core , поэтому может быть что-то вверх по потоку, которое блокирует доступ к файлам .htaccess прямо.

Этот вопрос / ответ привел меня к документации, за которую я благодарен, но вот что я решил для меня.

Предыдущий файл .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 

Вы уверены, что вам разрешено переопределять параметры в вашем файле .htaccess? проверьте главный файл конфигурации apache для этого

 Options +FollowSymLinks Options -Indexes 

на многих общих хостингах вышеприведенный код часто являются основными проблемами

И вы абсолютно уверены, что пользователь apache (возможно, _www) имеет доступ к каталогу ( /home/abc/opt/apache/htdocs/xyz/ )?

Другой пример: переписать:

 www.yoursite.com/script.php?product=123 

в

 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