Корневой домен .htaccess требует www, а поддомен не требует www - PullRequest
1 голос
/ 19 октября 2011

Я хочу установить домен, как показано ниже:

example.com -> www.example.com

example.com / page -> www.example.com/page

www.example.com -> не перенаправляет

www.example.com / page -> не перенаправляет


subdomain.example.com -> не перенаправляет

subdomain.example.com / page -> не перенаправляет

www.subdomain.example.com -> subdomain.example.com

www.subdomain.example.com / page -> subdomain.example.com/page


http и https также должны работать.

Я получаю код от .htaccessтребовать WWW для домена, но разрешить субдомен, если он существует без жесткого кодирования

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ 
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

, он может работать очень хорошо для всех, но за исключением следующих случаев:

www.subdomain.example.com -> www.subdomain.example.com

www.subdomain.example.com / page -> www.subdomain.example.com/page

поддомен должен не есть "www."префикс, но он все еще с «www.»префикс.

спасибо за урок.

1 Ответ

1 голос
/ 20 октября 2011

Добавьте это после того, как у вас есть правила

RewriteCond %{HTTPS} ^on$
RewriteCond %{HTTP_HOST} ^www\.([^.]+\.[^.]+\.[^.]+)$
RewriteRule ^ https://%1%{REQUEST_URI} [L]

RewriteCond %{HTTPS} !^on$
RewriteCond %{HTTP_HOST} ^www\.([^.]+\.[^.]+\.[^.]+)$
RewriteRule ^ http://%1%{REQUEST_URI} [L]

Я не проверял это, но я почти уверен, что моя теория в этом убедительна.По крайней мере, предположим, что часть HTTPS из вашего примера работает.

...