Универсальный URL домена переписать регулярное выражение, чтобы изменить домены 2-го уровня на включение www

#regex

#регулярное выражение

Вопрос:

Я пытаюсь придумать правило перенаправления, которое работало бы универсально для всех доменов 2-го уровня для перенаправления на WWW, и я борюсь с регулярным выражением. Есть много тем, но все они предлагают использовать именованный домен, я уверен, что это можно сделать лучше.

Вот что у меня есть на данный момент: http://regexr.com/393vp

Редактировать: Очевидно, ссылки на сторонний редактор недостаточно, чтобы вопрос не был не по теме. Регулярное выражение, в котором я нуждался, должно было совпадать

 domain.tld
2nddomain.tld
another-domain.tld
  

Но не

 www.domain.tld
one.domain.tld
one.two.domain.tld
  

Комментарии:

1. Задавая такие вопросы, это помогает предоставить образцы входных данных с ожидаемым результатом.

2. Было бы здорово, если бы вы могли поделиться некоторыми входными данными и ожидаемыми результатами?

Ответ №1:

я не смог заставить его хорошо работать с данными вашего примера при использовании многострочной опции, но если вы добавите каждую строку по отдельности, это будет соответствовать тем, перед которыми необходимо добавить «www.». к ним:

 ^[^.]*.[^.]*$
  

это только начало строки, бесконечно много не точек, одна точка, бесконечно много не точек, а затем конец строки.

Комментарии:

1. Да, это необычно в regexr, но это работает в моей среде, поскольку я передаю ему только один домен (просто пришлось добавить группу захвата ко всему выражению, чтобы замена сработала). Большое спасибо.

Ответ №2:

Попробуйте это:

 RewriteEngine On
RewriteCond %{HTTP_HOST} ^(?!www)[^.] .example.com
RewriteRule ^(.*)$ http://www.example.com/$1 [QSA,NE,L,R]
  

Как только вы убедитесь, что перенаправление работает, вы можете изменить его R на R=301 , чтобы сделать постоянным.
Предполагается, что mod_rewrite одновременно установлен и активирован для файлов htaccess.
Если вы не уверены, чтобы проверить, установлен ли mod_rewrite, посмотрите на список установленных модулей в выходных данных phpinfo();
По умолчанию mod_rewrite не включен для файлов htaccess. Если вы управляете своим собственным сервером, откройте httpd.conf
и убедитесь, что блок каталога webroot содержит одну из этих строк: AllowOverride FileInfo или AllowOverride All

Комментарии:

1. Это зависит от домена «exmaple.com «, не то, что я хочу, мне нужно, чтобы это было универсальным для любого домена.