Поддержка WordPress Multisite Руссие субдомены на wordpress multisite

  • Имеется домен site.net и даже сайт.net
    Заказчик хочет иметь субдомен на русском языке site.net/заказчик/ или сайт.net/заказчик/
    Как это можно реализовать на вордпрессе? При создании сама субдомена как известно Разрешены только латинские буквы в нижнем регистре (a—z) и цифры.

Просмотр 12 ответов — с 1 по 12 (всего 12)
  • Модератор Yui

    (@fierevere)

    永子

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

    ну я не дурак, прежде чем задать вопрос пробовал. А вы?
    браузер переводит только домен,
    субдомен выглядит site.net/xn—-7sbbvm5bfs1b/

    Модератор Yui

    (@fierevere)

    永子

    субдомен.сайт.рф
    в случае кириллического субдомена работать будет только для кириллического же домена 2-го уровня

    а то что хотите вы, это site.net/папка а не «субдомен»

    оно а пуникод не кодируется, а используется utf8
    %D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D1%87%D0%B8%D0%BA
    заказчик

    опять же зависит от браузера, будет оно выглядеть нормально или с %%
    если не хочется иметь таких неудобств лучше делать транслитерацию в латиницу, для ЧПУ, можно автоматически плагином http://wordpress.org/plugins/rustolat/

    да в том то и дело что заказчику хочется русскими буквами, «патамушта у конкурента была страничка с русскими» Ну объяснить что свой сайт и своя страничка это разное не получается
    ладно, с UTF-8 вариант работает
    я то понимаю что это дурь

    >>>а то что хотите вы, это site.net/папка а не «субдомен»
    скажем так — без разницы, это не папка и не субдомен. это сайт

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    В Multisite действительно есть некоторые сложности с добавлением нестандартных адресов, в багтрекере тоже рассматривается этот вопрос: #17397.

    Вижу, что ответ уже есть, но вдруг кому-нибудь пригодится более подробное описание.

    Предлагаю следующий алгоритм:

    1. Создайте сайт с любым допустимым адресом (например, /client/).
    2. В сообщении «Сайт добавлен» нажмите ссылку «Редактировать» (или найдите сайт на странице «Все сайты» и нажмите ссылку «Изменить»).
    3. В поле «Путь» введите /%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D1%87%D0%B8%D0%BA/ — это слово «заказчик», пропущенное через PHP-функцию urlencode(). Можно воспользоваться сервисом URL Decoder/Encoder.
    4. В файле .htaccess найдите эти строки:
      RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
      ...
      RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
      RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]

      Замените их на следующие:

      RewriteRule ^(.+?/)?wp-admin$ $1wp-admin/ [R=301,L]
      ...
      RewriteRule ^(.+?/)?(wp-(content|admin|includes).*) $2 [L]
      RewriteRule ^(.+?/)?(.*\.php)$ $2 [L]

    После этих действий у меня получился сайт ms.wordpress/заказчик/ с работающей админкой и постоянными ссылками.

    у меня в .htaccess что править?

    #uploaded files
    RewriteRule ^(.*/)?files/$ index.php [L]
    RewriteCond %{REQUEST_URI} !.*wp-content/plugins.*
    RewriteRule ^(.*/)?files/(.*) wp-includes/ms-files.php?file=$2 [L]
    
    # add a trailing slash to /wp-admin
    RewriteCond %{REQUEST_URI} ^.*/wp-admin$
    RewriteRule ^(.+)$ $1/ [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule . - [L]
    RewriteRule  ^([_0-9a-zA-Z-]+/)?(wp-.*) $2 [L]
    RewriteRule  ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
    RewriteRule . index.php [L]
    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    [_0-9a-zA-Z-]+ заменить на .+?.

    RewriteRule  ^(.+?./)?(wp-.*) $2 [L]
    RewriteRule  ^(.+?./)?(.*\.php)$ $2 [L]

    выдает ошибку 500 на всем домене
    с точкой и без .+?

    надеюсь отсутствие пары строк не смертельно?

    RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
    RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]

    что они дают?

    разобрался, при ЧПУ не нужен ?
    такой вариант работает

    RewriteRule  ^(.+/)?(wp-.*) $2 [L]
    RewriteRule  ^(.+/)?(.*\.php)$ $2 [L]

    спасибо

    Если следовать инструкции, которую предоставил Sergey Biryukov, то у меня работает тоже. Проблема с браузером IE10 (похоже, что и в предыдущих версиях также) он не декодирует URL в адресной строке браузера. Выглядит ужасающе 🙂

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    RewriteRule  ^(.+?./)?(wp-.*) $2 [L]
    RewriteRule  ^(.+?./)?(.*\.php)$ $2 [L]

    выдает ошибку 500 на всем домене

    Вторая точка (после вопросительного знака) — лишняя, в моём фрагменте из четвёртого пункта её нет.

    надеюсь отсутствие пары строк не смертельно?

    RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
    RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]

    что они дают?

    Без них нет доступа к админке дочернего сайта и не загружаются стили темы.

    разобрался, при ЧПУ не нужен ?
    такой вариант работает

    RewriteRule  ^(.+/)?(wp-.*) $2 [L]
    RewriteRule  ^(.+/)?(.*\.php)$ $2 [L]

    Работает, но без вопросительного знака после плюса у меня не подгружался файл wp-admin.css (под маску первой части выражения попадал не только главный подкаталог, а весь путь к файлу, поэтому потребовалось «ленивое» выражение), а постоянные ссылки работали и с вопросительным знаком.

    Кстати, у вас почему-то .htaccess от более старых версий, в WordPress 3.6 правила немного другие.

    >>>Кстати, у вас почему-то .htaccess от более старых версий, в WordPress 3.6 правила немного другие.

    я с первых версий на вопдпресс и баддипресс. Естественно мусор видимо накопился. Раньше ведь ручками обновлялись. Сам решал некоторые проблемы. Собственно мои вопросы здесь так и не решились 🙁

Просмотр 12 ответов — с 1 по 12 (всего 12)
  • Тема «Руссие субдомены на wordpress multisite» закрыта для новых ответов.