С mod_rewrite я могу указать RewriteBase в RewriteCond?
Я хочу, чтобы мой файл .htaccess указывал другую RewriteBase в зависимости от того, находится ли файл .htaccess на моем локальном компьютере или на веб-сервере. Это код mod_rewrite, который я пробовал, однако он не работал:
RewriteCond %{HTTP_HOST} ^localhost:8080
RewriteBase /example/
RewriteCond %{HTTP_HOST} ^www.example.com
RewriteBase /
Это может быть полезно для предварительного просмотра нескольких веб-сайтов на моем локальном компьютере, а затем для загрузки этих сайтов на веб-серверы для отдельных доменных имен.
Ответы
Ответ 1
Единственное решение, которое мы наконец нашли, выглядит так:
# Activation of the URL Rewriting
Options +FollowSymlinks
RewriteEngine On
# RewriteBase equivalent - Production
RewriteCond %{HTTP_HOST} !^localhost$
RewriteRule . - [E=REWRITEBASE:/production/path/]
# RewriteBase equivalent - Development
RewriteCond %{HTTP_HOST} ^localhost$
RewriteRule . - [E=REWRITEBASE:/development/path/]
# Rewriting
RewriteRule ^(.*)$ %{ENV:REWRITEBASE}index.php?page=$1 [L]
Этот код предлагает способ имитации разностей "RewriteBase".