Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Директива RewriteBase
Описание: | Устанавливает базовый URL для преобразований в контексте каталога |
---|---|
Синтаксис: | RewriteBase URL-path |
Значение по умолчанию: | Смотри использование для более подробной информации |
Контекст: | directory.htaccess |
Разрешение: | FileInfo |
Статус: | Расширение |
Модуль: | mod_rewrite |
Директива RewriteBase устанавливает базовый URL для преобразований в контексте каталога. Директива RewriteBase используется в конфигурационных файлах каталогов .htaccess. Это будет работать локально, т.е., префикс локального каталога отбрасывается на этом этапе обработки и ваши правила преобразований работают только в оставшейся части. В конце он автоматически добавляется обратно к пути.
Настройка по умолчанию
RewriteBase physical-directory-path
Когда, для какого-нибудь нового URL происходит подстановка (преобразование), этот модуль должен заново вовлечь этот URL в обработку. Для того чтобы иметь возможность сделать это, нужно знать какие у него префикс или база URL. По-умолчанию этот префикс равен самому пути. Однако на некоторых сайтах URL'ы не прямо соответствуют физическим путям, поэтому вы должны использовать директиву RewriteBase для указания правильного префикса URL.
Если URL вашего сервера не соответствуют физическим путям к файлам, вы должны использовать RewriteBase в каждом из .htaccess файлов, где вы хотите использовать директивы RewriteRule.
Например, предположим следующий конфигурационный файл каталога:
# # /abc/def/.htaccess -- конфигурационный файл каталога /abc/def # Помните: /abc/def это физический путь /xyz, т.е., у сервера есть # директива 'Alias /xyz /abc/def' к примеру # RewriteEngine On # даем серверу знать что мы работаем через /xyz а не # через префикс физического пути /abc/def RewriteBase /xyz # теперь правила преобразований RewriteRule ^oldstuff\.html$ newstuff.html
В примере выше, запрос к /xyz/oldstuff.html
корректно преобразуется в физический файл
/abc/def/newstuff.html
.
Для любителей поковыряться в Apache
Следующий список дает подробную информацию об этапах внутренней работы:
Запрос: /xyz/oldstuff.html Внутренняя работа: /xyz/oldstuff.html -> /abc/def/oldstuff.html (per-server Alias) /abc/def/oldstuff.html -> /abc/def/newstuff.html (per-dir RewriteRule) /abc/def/newstuff.html -> /xyz/newstuff.html (per-dir RewriteBase) /xyz/newstuff.html -> /abc/def/newstuff.html (per-server Alias) Результат: /abc/def/newstuff.html
Это может показаться очень сложным, однако это корректная внутренняя работа Apache. Из-за того что преобразование происходит целиком внутри сервера Apache, оно происходит очень быстро и не требует дополнительных накладных расходов.
.
Прокомментировать/Отблагодарить