выполнить правила .htaccess без индексного файла в папке - PullRequest
0 голосов
/ 07 июня 2019

Структура сайта:

site/client
site/client/index.php
site/client/.htaccess
site/server
site/server/main.php
site/.htaccess

site / .htaccess директивы:

Options -Indexes
DirectoryIndex disabled

RewriteEngine On
RewriteCond %{SERVER_NAME}%{REQUEST_URI} ^127.0.0.1/site(/.*)
RewriteRule ^ client%1 [END]

директивы site / client / .htaccess:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^action= [OR]
RewriteCond %{QUERY_STRING} &action=
RewriteRule ^ ../server/main.php [END]

RewriteRule ^ index.php [END]

Тогда я перехожу по ссылке http://127.0.0.1/site/

И я получаю ошибку 403 (доступ запрещен).

Часть журнала ошибок Apache:

[rewrite:trace3] [pid 16152:tid 1952] mod_rewrite.c(482): [client 127.0.0.1:53242] 127.0.0.1 - - [127.0.0.1/sid#3ceff50][rid#98c5240/initial] [perdir C:/Users/Public/xampp/htdocs/site/] strip per-dir prefix: C:/Users/Public/xampp/htdocs/site/ -> 
[rewrite:trace3] [pid 16152:tid 1952] mod_rewrite.c(482): [client 127.0.0.1:53242] 127.0.0.1 - - [127.0.0.1/sid#3ceff50][rid#98c5240/initial] [perdir C:/Users/Public/xampp/htdocs/site/] applying pattern '^' to uri ''
[rewrite:trace4] [pid 16152:tid 1952] mod_rewrite.c(482): [client 127.0.0.1:53242] 127.0.0.1 - - [127.0.0.1/sid#3ceff50][rid#98c5240/initial] [perdir C:/Users/Public/xampp/htdocs/site/] RewriteCond: input='127.0.0.1/site/' pattern='^127.0.0.1/site(/.*)' => matched
[rewrite:trace2] [pid 16152:tid 1952] mod_rewrite.c(482): [client 127.0.0.1:53242] 127.0.0.1 - - [127.0.0.1/sid#3ceff50][rid#98c5240/initial] [perdir C:/Users/Public/xampp/htdocs/site/] rewrite '' -> 'client/'
[rewrite:trace3] [pid 16152:tid 1952] mod_rewrite.c(482): [client 127.0.0.1:53242] 127.0.0.1 - - [127.0.0.1/sid#3ceff50][rid#98c5240/initial] [perdir C:/Users/Public/xampp/htdocs/site/] add per-dir prefix: client/ -> C:/Users/Public/xampp/htdocs/site/client/
[rewrite:trace8] [pid 16152:tid 1952] mod_rewrite.c(482): [client 127.0.0.1:53242] 127.0.0.1 - - [127.0.0.1/sid#3ceff50][rid#98c5240/initial] [perdir C:/Users/Public/xampp/htdocs/site/] Rule has END flag, no further rewriting for this request
[rewrite:trace2] [pid 16152:tid 1952] mod_rewrite.c(482): [client 127.0.0.1:53242] 127.0.0.1 - - [127.0.0.1/sid#3ceff50][rid#98c5240/initial] [perdir C:/Users/Public/xampp/htdocs/site/] strip document_root prefix: C:/Users/Public/xampp/htdocs/site/client/ -> /site/client/
[rewrite:trace1] [pid 16152:tid 1952] mod_rewrite.c(482): [client 127.0.0.1:53242] 127.0.0.1 - - [127.0.0.1/sid#3ceff50][rid#98c5240/initial] [perdir C:/Users/Public/xampp/htdocs/site/] internal redirect with /site/client/ [INTERNAL REDIRECT]
[rewrite:trace8] [pid 16152:tid 1952] mod_rewrite.c(482): [client 127.0.0.1:53242] 127.0.0.1 - - [127.0.0.1/sid#3ceff50][rid#98b6ef8/initial/redir#1] [perdir C:/Users/Public/xampp/htdocs/site/client/] Declining, no further rewriting due to END flag
[autoindex:error] [pid 16152:tid 1952] [client 127.0.0.1:53242] AH01276: Cannot serve directory C:/Users/Public/xampp/htdocs/site/client/: No matching DirectoryIndex () found, and server-generated directory index forbidden by Options directive

Вопрос

Почему корневая папка обработана успешно, но во вложенной папке есть [autoindex: error]?

Мне нужно обрабатывать папки без индексных файлов, но с файлом .htaccess.

Комментарий

Кроме того, если вы установите индекс каталога «index.php» в папке клиента, то перенаправление будет успешным. Поэтому флаг [END] не влияет на работу mod_rewrite в папке клиента.

Пожалуйста,

  • не навязывать другую архитектуру .htaccess.
  • не отключать модули и не редактировать другие файлы вне папки сайта. я нет доступа.
  • Наличие строки «DirectoryIndex отключено» обязательно.

Все эти условия необходимы для создания вложенных сайтов друг в друге, где будут папки без индексных файлов, но имеющие файл .htaccess в качестве корневой папки сайта.

...