#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 «, не то, что я хочу, мне нужно, чтобы это было универсальным для любого домена.