У меня есть простой локальный сайт с этой структурой каталогов:Htaccess - каталог карты в URL-адрес и каталог скрыть имя
/
test2/
.htaccess
bootstrap.php
git-service/
bootstrap.php
Что я пытаюсь выполнить в том, что, когда пользователь запрашивает www.example. com/test2/git/он получает содержимое каталога git-service, а если он пытается запросить каталог git-service напрямую (www.example.com/test2/git-service/), этот запрос рассматривается как нормальный запрос (например, заданный как значение GET для основного теста2/bootstrap.php).
Что я сделал, теперь это:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /test2
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteCond %{REQUEST_URI} ^/test2/git($|/.*$)
RewriteRule . /test2/git-service/bootstrap.php?request=GIT [L]
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteCond %{REQUEST_URI} ^/test2/git-service($|/.*$)
RewriteRule . /test2/bootstrap.php [L]
Проблема заключается в том, что и/test2/мерзавец, и/test2/запросы ГИТ-службы передаются в основной файл bootstrap.php (test2/самозагрузки .php). Если я закомментирую второй блок (тот, который обрабатывает запросы git-service), то поведение правильное, что означает, что запросы test2/git корректно передаются в файл git-service/bootstrap.php. Но когда я активирую вторую часть, те же запросы на test2/git/как раньше передаются в основной файл test2/bootstrap.php.
Как сторона не, рассуждение позади всего этого заключается в том, что я пытаюсь отделить фактическое имя каталога от запросов, сделанных для его получения и его содержимого.
спасибо, что заранее.
==== ==== EDIT
Спасибо большое, анубхава, ваше предложение работал очень хорошо, хотя и нуждается незначительные изменения, так как сервер продолжал давать мне 404 ошибки при запросе GIT/страниц (страницы git-service были правильно отображены).
код, который работал для меня это:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /test2/
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
#RewriteRule ^git(/.*|)$ git-service/bootstrap.php?request=GIT [L,NC]
RewriteCond %{REQUEST_URI} ^/test2/git(|/.*)$
RewriteRule . /test2/git_service/bootstrap.php?request=GIT [L]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^git-service(|/.*)$ bootstrap.php [L,NC]
По некоторым причинам я не могу удалить вторую RewriteCond линию, и я не могу заменить все сопрягая точку в первом RewriteRule с фактическим состоянием, или Я получаю 404 ошибки.