Перенаправить ссылки без www на www [duplicate]

Эти странные цифры появляются из-за того, что компьютеры используют двоичную (базовую 2) систему счисления, а мы используем десятичную (базовую 10).

Есть большинство дробных чисел, которые не могут быть точно представлены в двоичном или десятичном или в обоих. Результат - округленное (но точное) число результатов.

146
задан Cristy 4 March 2016 в 13:10
поделиться

12 ответов

Эта конфигурация работала для меня в bitnami wordpress с настройкой SSL:

Добавил ниже под «RewriteEngine On» в файле /opt/bitnami/apps/wordpress/conf/httpd-app.conf

RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http%{ENV:protossl}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteBase /
RewriteCond %{HTTPS} !on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
3
ответ дан Abhilash Mishra 25 August 2018 в 12:14
поделиться
RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\.

RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

Для Https

RewriteCond %{HTTPS}s ^on(s)|

RewriteRule ^(.*)$ http%1://www.%{HTTP_HOST}/$1 [R=301,L]
72
ответ дан absiddiqueLive 25 August 2018 в 12:14
поделиться

Я протестировал все вышеперечисленные решения, но не работал для меня, я попытался удалить http: // и не перенаправлять также удалил WWW, он перенаправлял хорошо, поэтому я запутался, особенно я запускаю все свои сайты под https: //

Итак, я объединил некоторые коды и разработал идеальное решение для http: // и https: // и www и non-www.

# HTTPS forced
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
# Redirect to www
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
</IfModule>

Надеюсь, это может помочь кому-то:)

2
ответ дан Al3abMizo Games 25 August 2018 в 12:14
поделиться

Вот правильное решение, которое поддерживает https и http:

# Redirect to www
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
63
ответ дан Alexey Kosov 25 August 2018 в 12:14
поделиться

Попробуйте это, я использовал его на многих веб-сайтах, он отлично работает

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^bewebdeveloper.com$
RewriteRule ^(.*) http://www.bewebdeveloper.com/$1  [QSA,L,R=301]
5
ответ дан Ali Aboussebaba 25 August 2018 в 12:14
поделиться
RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC]
RewriteRule (.*) http://www.domain.com/$1 [L,R=301]

Это перенаправит ваш домен, который не запущен с помощью WWW. Он не перенаправляет ваш весь поддомен.

Это полезно.

2
ответ дан Ashish Gondaliya 25 August 2018 в 12:14
поделиться

Если возможно, добавьте это в основной файл конфигурации Apache. Это более легкое решение, требуется меньше обработки.

<VirtualHost 64.65.66.67>
        ServerName example.com
        Redirect permanent / http://www.example.com/
</VirtualHost>
<VirtualHost 64.65.66.67>
   ServerAdmin me@example.com
   ServerName www.example.com
   DocumentRoot /var/www/example
   .
   .
   . etc

Таким образом, отдельный VirtualHost для «example.com» захватывает эти запросы, а затем постоянно перенаправляет их на ваш основной VirtualHost. Таким образом, никакого анализа REGEX с каждым запросом нет, и ваши клиентские браузеры будут кэшировать перенаправление, чтобы они никогда (или редко) не запрашивали «неправильный» URL-адрес, сохраняя при загрузке сервера.

Обратите внимание: конечная косая черта в Redirect permanent / http://www.example.com/. Без него перенаправление из example.com/asdf будет перенаправлено на http://www.example.comasdf вместо http://www.example.com/asdf.

0
ответ дан Buttle Butkus 25 August 2018 в 12:14
поделиться

Два предупреждения

Избегайте 301 и предпочитаете современные коды статуса ответа 303 или 307.

Избегайте 301

Подумайте, если вам действительно нужна постоянная перенаправленная как [R=301], потому что если вы решите изменить его позже, тогда предыдущие посетители страницы будут продолжать видеть страницу исходного перенаправления.

Информация о постоянном перенаправлении часто сохраняется в кеше браузера и , в общем, его трудно устранить (перезагрузка страницы не решает проблему).

Избегайте 302 слишком

Новая версия HTTP-протокола (v1.1) добавила два новых кода статуса ответа, которые может использоваться вместо 302.

  • 303 Перенаправление URL, но требуя изменить тип запроса для GET.
  • 307 Перенаправление URL, но требуя сохранения тип запроса, который был первоначально отправлен.

Вы все равно можете использовать код 302 (перенаправление непостоянства), хотя он считается неоднозначным. В любом случае, большинство браузеров реализуют 302 так же, как и новый 303 код.

0
ответ дан ePi272314 25 August 2018 в 12:14
поделиться

Я считаю, что главный ответ успешно перенаправляет не-www на www (ex: mysite.com -> www.mysite.com), но не учитывает поддомены подстановочных знаков, что приводит к:

random.mysite.com -> www.random.mysite.com

Вот решение с / без HTTPS

HTTP

RewriteEngine On

RewriteCond %{HTTP_HOST} !www.mysite.com$ [NC]
RewriteRule ^(.*)$ http%{ENV:protossl}://www.mysite.com/$1 [L,R=301] 

HTTP / HTTPS

RewriteEngine On

RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ - [env=protocol:https]

RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ - [env=protocol:http]

RewriteCond %{HTTP_HOST} !www.mysite.com$ [NC]
RewriteRule ^(.*)$ %{ENV:protocol}://www.mysite.com/$1 [L,R=301]

* note: я не тестировал https, потому что в настоящее время у меня нет сертификата для тестирования, но если кто-то может проверить или оптимизировать то, что у меня есть, это будет потрясающе.

2
ответ дан Hunter Frazier 25 August 2018 в 12:14
поделиться

Добавьте следующий код в файл .htaccess.

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

URL-адрес перенаправления учебника можно найти здесь - Перенаправить не-www на www & amp; HTTP to HTTPS с использованием файла .htaccess

2
ответ дан JoyGuru 25 August 2018 в 12:14
поделиться

Запись в .htaccess:)

## Redirect from non-www to www (remove the two lines below to enable)
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
-1
ответ дан Piseth Sok 25 August 2018 в 12:14
поделиться

Следующий пример работает как на ssl, так и на не-ssl и работает намного быстрее, поскольку вы используете только одно правило для управления http и https

RewriteEngine on


RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTPS}s on(s)|offs()
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R]

[Tested]

перенаправляет

http

-

https

-

18
ответ дан starkeen 25 August 2018 в 12:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: