2015-10-13 2 views
2

Мои следующие .htaccess отлично работает в моей локальной среде. Он расположен в http://myexample.com/subdirectory-1/subdirectory-2/. Однако я хочу, чтобы он также работал на моем веб-сервере, который, очевидно, имеет другой домен. Может ли кто-нибудь помочь настроить приведенный ниже код для работы в любом домене?mod_rewrite с относительными путями

Options +FollowSymlinks 
RewriteEngine On 

# If cookie 'de' 
RewriteCond %{HTTP_COOKIE} de [NC] 
RewriteRule ^$ http://myexample.com/subdirectory-1/subdirectory-2/de [R=301] 

# If cookie 'en' 
RewriteCond %{HTTP_COOKIE} en [NC] 
RewriteRule ^$ http://myexample.com/subdirectory-1/subdirectory-2/en [R=301] 

# If browser language 'de' 
RewriteCond %{HTTP:Accept-Language} ^de [NC] 
RewriteRule ^$ http://myexample.com/subdirectory-1/subdirectory-2/de [R=301] 

# Else 
RewriteRule ^$ http://myexample.com/subdirectory-1/subdirectory-2/en [R=301] 
+0

Возможный дубликат [мод \ _rewrite VS относительные пути] (HTTP: // StackOverflow .com/вопросы/6333834/Mod-переписать-против-относительного пути) – 0X0nosugar

ответ

1

Вы можете использовать динамический RewriteBase и использовать тот же набор правил, как в локальный и на живом сервере:

RewriteEngine On 

# generate rewritebase and store in BASE env variable 
RewriteCond $0#%{REQUEST_URI} ^([^#]*)#(.*)\1$ 
RewriteRule ^.*$ - [E=BASE:%2] 

# If cookie 'en' or 'de' 
RewriteCond %{HTTP_COOKIE} (en|de) [NC] 
RewriteRule ^$ %{ENV:BASE}%1 [L,R=301] 

# If browser language 'de' 
RewriteCond %{HTTP:Accept-Language} ^de [NC] 
RewriteRule ^$ %{ENV:BASE}de [R=301] 

# Else 
RewriteRule ^$ %{ENV:BASE}en [L,R=301]