искал 2 дня и не может получить правильное решение из-за моего отсутствия понимания mod_rewrite и ограничений по времени для этого проекта, поэтому надеемся, что кто-то может помочь.
Цель
Переписывать все запросы корневому index.php, если у клиента нет правильного файла cookie. Если у клиента есть правильный файл cookie, вы можете просматривать их по своему усмотрению.
Проблема
Htaccess в моем подкаталоге принимает предварительную оценку моего корневого htaccess, поэтому запросы, такие как www.mydomain.com/subdir/index.php, не перенаправляются.
Мой корень .htaccess
Options FollowSymLinks RewriteEngine On RewriteBase / RewriteCond %{HTTP_COOKIE} !^.*pass.*$ RewriteCond %{REQUEST_URI} !^/index.php$ RewriteRule ^(.*)$ http://www.mydomain.com/index.php?url=$0 [NC]
Мой subdir htaccess
RewriteEngine On RewriteBase / RewriteCond $1 !\.(gif|jpe?g|png)$ [NC] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php?/$1 [L]
Дополнительная информация
В идеале я пытаюсь создать защищенную паролем область, поэтому все запросы направляются на index.php, где может быть введен пароль, а при проверке создается файл cookie, что позволяет бесплатно просматривать содержимое и подкаталоги. Поэтому, если есть лучший способ выполнить это, пожалуйста, дайте мне знать, и я не пошел на .htpasswd, так как мне нужны пользовательские логин, ошибки и всплеск страниц.
Кроме того, subdir .htaccess является обработчиком URL ExpressionEngine.
Благодарю.
Чтобы разрешить выполнение правил перезаписи из родительского .htaccess (htaccess из родительской папки), вам необходимо явно разрешить его (Apache будет обрабатывать правила перезаписи в текущем .htaccess как единственном, который должен быть выполнен, если переписанный URL остается в та же подпапка).
Вам нужно добавить эту строку в ваш .htaccess в подпапке:
RewriteOptions inherit
Руководство Apache: http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriteoptions