Назад | Перейти на главную страницу

Условное перенаправление 301 в зависимости от сервера (localhost или production)

На практике я делаю 301 редирект без www -> www для развертывания рабочего сервера. Но у меня есть небольшая неприятная проблема / несоответствие с настройками перезаписи .htaccess между моим сервером разработки и производственным сервером.

Если я оставлю условие перенаправления без www -> www 301 в файле .htaccess (который развертывается вместе с веб-сайтом), мой веб-сервер разработки пытается перенаправить "http: // локальный / mysite"к"http: //www.localhost/mysite"что не работает.

Поэтому мне приходится переключаться между условиями перезаписи .htaccess в зависимости от сервера, и это немного громоздко.

Есть ли способ использовать условный оператор для достижения чего-то вроде ...

# Rewrite "www.domain.com -> domain.com" 
<IfModule mod_rewrite.c>
  <If !localhost>         #This is not valid code
    RewriteCond %{HTTPS} !=on
    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
    RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
  <else>
    RewriteCond %{HTTPS} !=on
    RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
    RewriteCond %{HTTP_HOST} (.+)$ [NC]
    RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]
  </If>
</IfModule>

Или есть более умный способ обойти это?

Жду ваших идей. Большое спасибо. Prembo.

Похоже, ваша конфигурация намерена удалить www из localhost запросы, если я правильно понимаю? В этой части нет необходимости, поэтому дайте мне знать, если я что-то упустил.

Как насчет чего-то вроде этого:

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} !^localhost$ [NC]
RewriteCond %{HTTP_HOST} !^www\..*$ [NC]
RewriteCond %{HTTP_HOST} ^(.+)$ [NC]
RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]