Я хотел бы перенаправить www.example.com
на example.com
. Следующий код htaccess делает это возможным:
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
Но есть ли способ сделать это в общем виде без жесткого кодирования доменного имени?
apache
mod-rewrite
url-rewriting
глубокий колодец
источник
источник
Ответы:
То же, что и у Майкла, но этот работает
источник
RewriteEngine On
прекурсора, чтобы заставить его работать.http://www.domain.com/
наhttp://domain.com//
. Вы должны добавить/
вRewruteRule
. Это работает для меняRewriteRule ^/(.*)$ http://%1/$1 [R=301,L]
.http://domain.com//
с двойными косыми чертами. Так я и сделал,RewriteRule ^(.*)$ http://%1$1 [R=301,L]
и, кажется, работает до сих порНо если нам нужно сделать это для отдельных http и https:
источник
RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST} ^www.example.com/$ [NC] RewriteRule ^(.*)$ http://www.example.com [R=301,L]
.../
..htaccess
вас не должно быть лишнего слеша. (Просто отметим, что если вы выполняете это перенаправление в конфигурации сервера, вам, вероятно, не следует использовать mod_rewrite для начала ... простой mod_aliasRedirect
в соответствующем контейнере vhost будет более эффективным и менее подверженным ошибкам.)Перенаправить не-www на www (оба: http + https)
источник
RewriteEngine On
иRewriteBase /
, но в остальном работает хорошо.Если вы хотите сделать это в файле httpd.conf, вы можете сделать это без mod_rewrite (и, очевидно, это лучше для производительности).
Я получил этот ответ здесь: /server/120488/redirect-url-within-apache-virtualhost/120507#120507
источник
Вот правила перенаправления URL-адреса www на no-www:
Вот правила перенаправления URL без www на www:
Обратите внимание, что я использовал
NE
флаг, чтобы предотвратить выход Apache из строки запроса. Без этого флага apache изменит запрошенный URLhttp://www.example.com/?foo%20bar
наhttp://www.example.com/?foo%2250bar
источник
RewriteCond
Захватывает все вHTTP_HOST
переменной послеwww.
и сохраняет его в%1
.В
RewriteRule
Захватывает URL без ведущего/
и сохраняет его в$1
.источник
sans leading "/"
- В.htaccess
(как указано в вопросе) нет ведущего/
, поэтому шаблон никогда не совпадает и перенаправление никогда не происходит. (В контексте сервера или виртуального хоста есть только начальная косая черта .) Кроме того, если после этого у вас есть какие-либо директивы mod_rewrite, вам понадобитсяL
флаг.Попробуй это:
Если хост начинается с www, мы помещаем весь хост в начало URL, затем снимаем «www».
источник
.htaccess
. В контексте каталога (.htaccess
) вы должны изменить первоеRewriteRule
на следующее:RewriteRule ^(.*)$ %{HTTP_HOST}/$1 [C,DPI]
(требуется Apache 2.2.12+). Обратите внимание на добавление косой черты иDPI
флага (Discard Path Info) для предотвращения дублирования части URL-пути (который фактически является «path-info»), как указано в предыдущих комментариях. Тем не менее, существуют более простые директивы - как описано в других ответах.Полный общий обработчик WWW, http / https
Я не видел полный ответ. Я использую это для обработки включения WWW.
Пожалуйста, дайте мне знать, как это работает, или если я оставил лазейку.
источник
www
на не-www
. Вы заставляете включениеwww
.Я могу найти много дезинформации о перенаправлениях htaccess. Прежде всего, убедитесь, что ваш сайт работает в Unix с использованием Apache, а не на хосте Windows, если вы ожидаете, что этот код будет работать.
(Убедитесь, что между каждой строкой текста нет пробелов; я добавил дополнительный пробел между строками, чтобы он хорошо отображался в этом окне.)
Это один фрагмент кода, который можно использовать для направления www-версии вашего сайта на http: // version. Есть и другие похожие коды, которые также можно использовать.
источник
Для подпапки
источник
Для тех, кому нужен доступ ко всему сайту БЕЗ префикса www.
Вы уверены, что добавили это в следующий файл
источник
protossl
переменную среды (это не стандартная переменная / переменная сервера). Это всегда будет пустым, поэтому всегда будет перенаправлять наhttp
. (Идея установкиprotossl
ранее в коде заключается в том, когда вы хотите сохранить протокол при перенаправлении. Однако, в эти дни вам, вероятно, следует перенаправлятьhttps
все время.)Использование .htaccess для перенаправления на www или без www:
Просто поместите следующие строки кода в ваш основной корневой файл .htaccess. В обоих случаях просто замените domain.com своим собственным именем хоста.
Перенаправить на www
Перенаправить на не-www
измените DOT на =>. !!!
источник
Я использовал вышеупомянутое правило для fwd www, а не для www, и оно прекрасно работает для домашней страницы, однако на внутренних страницах они пересылаются в /index.php
Я нашел это другое правило в моем файле .htaccess, который вызывает это, но не уверен, что с этим делать. Любые предложения будут великолепны:
источник
с www на не www с https
источник
Если вы хотите удалить
www
обаhttp
иhttps
, используйте следующее:Это перенаправляет Non SSL
в
И SSL
в
на Apache
2.4.*
вы можете сделать это с помощью директивыRedirect
withif
,источник
использование: Javascript / jQuery
Или .htaccess:
и метод PHP:
Ajax
источник
Единственный способ заставить его работать ...
источник
Если вы заставляете www. в url или принудительном протоколе ssl, попробуйте использовать возможные варианты в файле htaccess, такие как:
источник
RewriteCond %{SERVER_PORT} 80
чтобы предложить более универсальную проверку, я предлагаю:RewriteCond %{HTTPS} off
Выбранный ответ и многие другие решения здесь отбросили часть URL после /, поэтому в основном он всегда перенаправляется на основной домен, по крайней мере, для меня. Поэтому я добавляю рабочий образец с полным путем после косой черты.
источник
Альтернативный подход, если настройка .htaccess не является идеальным вариантом:
Я создал простой сервер перенаправления для публичного использования. Просто добавьте запись A или CNAME:
Больше информации: https://simpleredirect.net
источник
Я не уверен, почему вы хотите удалить www. Но обратная версия будет:
И преимущество этого сценария: если у вас есть что-то вроде test.whattimein.com или любого другого (среда для разработки / тестирования), он не будет перенаправлять U в исходную среду.
источник
Это обновлено для работы на Apache 2.4:
Единственное изменение против Майкла - удалить
[NC]
ошибку, которая выдает ошибку «AH00665»:источник
RewriteCond %{REQUEST_FILENAME} !-f [NC]
).NC
Флаг делает небольшое различие в приведенном выше, однако, поэтомуNC
флаг должен быть использован здесь , чтобы поймать небольшую часть бот трафика , который (неправильно) посылает в верхнем регистре имя хоста.Добавлен, если localhost, игнорировать перенаправление (для целей разработки в локальной среде). Если не localhost AND (не https ИЛИ это www), перенаправьте на https и non-www.
источник
Привет, ты можешь использовать следующие правила в своем файле htaccess:
источник