У меня есть 2 доменных имени, foo.com
и bar.com
и файл .htaccess
в корневой bar.com
запрашивают все запросы на bar.com
для перенаправления на foo.com
кроме начального поиска файла индекса каталога, который получает указал на определенный файл php (functions.php
) на foo.com
.
Это означает, что запрос на bar.com
или www.bar.com
будет видеть foo.com/functions.php
доступ и различные запросы на изображения, таблицы стилей и т.д. продолжают обращаться переписанный относительный путь foo.com/images/image.jpg
а не foo.com/function.phpimages/image.jpg
. Все это прекрасно работает.
Теперь проблема.
Я хочу включить подкаталог на bar.com
, который не перенаправляется. Как и в случае, запрос на bar.com/newdirectory/
отправляется в этот каталог, и все относительные запросы на файлы ведут себя как обычно, сохраняя исходное правило (описанное выше) для всех, кто обращается к bar.com
в корне. В настоящее время я получаю 404, если попытаюсь получить доступ к новому подкаталогу.
В моем исходном файле .htaccess
я включил свободный код для проверки того, что файлы не существуют. Я попытался добавить флаг !-d
чтобы проверить, не существуют ли вначале каталоги, но это привело к тому, что запросы на bar.com
переходили прямо к foo.com
а не к foo.com/functions.php
Текущий файл .htaccess
:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
# Check the request isn't an existing file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^$ http://www.foo.com/functions.php [P]
RewriteCond %{REQUEST_FILENAME} !^$ [NC]
RewriteRule ^(.*) http://www.foo.com/$1 [P]
Вы можете добавить после RewriteBase/
:
RewriteRule ^newdirectory/? - [L]
И для других. Нет необходимости проверять файл, потому что вы перенаправляете только пустой URI.
Вы можете использовать:
RewriteRule ^$ http://www.foo.com/functions.php [P]
RewriteRule ^(.+) http://www.foo.com/$1 [P]
Что дает для всех .htaccess
:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^newdirectory/? - [L]
RewriteRule ^$ http://www.foo.com/functions.php [P]
RewriteRule ^(.+) http://www.foo.com/$1 [P]
RewriteRule ^(newdirectory|otherdirectory|other|other)/? - [L]