Имитация каталога с помощью htaccess - PullRequest
1 голос
/ 12 июня 2019

Когда открывается мой основной веб-сайт, он извлекает содержимое из /home/parsa/public_html.

Я пробовал это: rewriteRule "^/(.*)$" "/ppyazi.com/$1"

Мне нужно, чтобы получить файлы из /home/parsa/public_html/ppyazi.com без перенаправленияна стороне пользователя.

Вот несколько примеров:

index.php для отображения содержимого ppyazi.com/index.php

users/index.php для отображения содержимого ppyazi.com/users/index.php

1 Ответ

1 голос
/ 13 июня 2019

Я пробовал это: rewriteRule "^/(.*)$" "/ppyazi.com/$1"

В .htaccess URL-путь, соответствующий шаблону RewriteRule , не начинается с косой черты. Таким образом, шаблон ^/(.*)$ никогда не будет совпадать, а ваша директива ничего не сделает.

Однако, если в подкаталоге /ppyazi.com с директивами mod_rewrite также есть файл .htaccess, вам следует быть осторожным с перезаписью циклов.

Попробуйте вместо этого следующее:

RewriteEngine On

rewriteRule !^ppyazi\.com\ /ppyazi.com%{REQUEST_URI} [L]

Шаблон RewriteRule просто проверяет, что URL еще не начинается с каталога, в который мы переписываем. Вместо обратной ссылки $1 (поскольку мы ничего не фиксируем в шаблоне RewriteRule ) мы используем вместо этого переменную сервера REQUEST_URI. Обратите внимание, что REQUEST_URI содержит полный URL-путь, включая префикс косой черты, поэтому слеш следует исключить из строки susbstitution .

Флаг L (last) необходим для предотвращения дальнейшей обработки директив, возникающих позднее в файле (в текущем цикле обработки). Если это последняя директива mod_rewrite в файле, то она является излишней. Однако обратите внимание, что в .htaccess процесс переписывания по существу начинается с (пока URL не проходит без изменений), поэтому другие директивы могут по-прежнему обрабатывать запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...