Перенаправление языков WordPress-Multisite с помощью Apache Rewrite - PullRequest
0 голосов
/ 15 апреля 2019

прямо сейчас я настраиваю новый Wordpress-Multisite. Я использую UNIX-машину (Debian9) с Maria-DB и Apache2.4. Этот мультисайт должен быть мультисайтовой сетью с языковыми субсайтами и поддоменами. Сейчас все работает хорошо, кроме перенаправления языка.

Моя проблема состоит из двух частей: Часть1: Мне нужно заблокировать мой Root-сайт и перенаправить каждый запрос в его языковую подпапку. Это означает, что если кто-то вводит https://my -site.com / , он должен перенаправить на https://my -site.com / BROWSER_Language , и если язык браузера не поддерживается, Посетителей всегда следует перенаправлять на https://my -site.com / ru / Часть 2: Я хочу использовать субдомены для разных проектов. Мои субдомены всегда должны выглядеть как subdomain.my-site.com. Я хочу деактивировать все перенаправления для всех поддоменов.

И вот что я сделал до сих пор: Я установил Wordpress со следующим URL https://www.my -site.com /

Я создал WP-Multisite со следующим .htaccess:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]

Я изменил свой .htaccess-файл ($ 2), чтобы он работал как для подпапки, так и для субдомена - Установки .....

Теперь я создал некоторые изменения в своем VirtualHost-файле в Apache, потому что я хочу перенаправить посетителей в BrowserLanguage:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

## Rewriting url for EN browser
RewriteCond %{REQUEST_URI} !^/(en|de)/ [NC]
RewriteCond %{HTTP:Accept-Language} ^(en|de).*$ [NC]
RewriteRule ^/?(.*)/$ https://%{HTTP_HOST}/%1/$1 [L]

#RewriteCond %{HTTP:Accept-Language} ^de.*$ [NC]
#RewriteRule ^/$ https://%{HTTP_HOST}/de/$1 [L]
#RewriteRule ^/?(.*) https://%{HTTP_HOST}/de/$1 [L]
## Rewriting url for JP browser
RewriteCond %{HTTP:Accept-Language} ^ja [NC]
RewriteRule ^/$ https://%{HTTP_HOST}/jp/ [L,R=301]

## No language
RewriteCond %{HTTP:Accept-Language} ^.*(ja|de|en).*$ [NC]
RewriteRule ^/$ https://%{HTTP_HOST}/en/   [L,R=301]

С этой конфигурацией я могу перенаправить своих посетителей в нужную подпапку, в зависимости от языка браузера, и если не настроен принятый язык, мои посетители видят https://my-site/en/.

НО: если я захочу войти, я получу несколько ошибок cookie.

И моя вторая проблема также зависит от моего VHost-Config: Мои субдомены также будут перенаправлены с этими правилами ... Это означает, что blog.my-site.com будет перенаправлен на blog.my-site.com/BROWSER_Language, и это плохо. Можно ли деактивировать мои перенаправления для всех поддоменов

Может, кто-то здесь сможет мне помочь?

Большое спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...