Як я можу зробити так, щоб мої URL-адреси завжди починалися з www?


17

Я хочу переконатись у тому, що користувачі прийдуть, www.mydomain.comнавіть якщо вони приїжджають через псевдонім mydomain.com. Це так, що я маю контроль над файлами cookie на субдоменах, і щоб Google бачив один єдиний домен, а не помірний URL-адрес.

Як я можу це зробити за допомогою апаша?


5
Чи можу я запропонувати вам замість цього відмінити це, а замість цього застосувати mydomain.com? Префікс 'www' є зайвим і зовсім непотрібним.
— Eevee

Файли cookie надсилаються на всі піддомени на mydomain.com, тоді як я можу самостійно вирішити, які файли cookie завантажуються звідки з www.mydomain.com .. Наприклад, я можу уникати додавання файлів cookie на static.mydomain.com, щоб файли cookie не були не передається для кожного завантаженого зображення. Це, безумовно, не зайве.
— Магнар

Ви можете конкретно сказати Google використовувати єдиний стиль посилання. Дивіться мою відповідь нижче.
— Робінкс

У мене немає представника, але додавання цих тегів було б корисним: перенаправлення redirectmatch mod_alias
— Том

1
Хоча це набагато пізніше, воно все ще актуально. www не застаріло, оскільки домен без субдомену має ряд недоліків. Дивіться так- www.org/why- use-www з кількох причин використовувати www.
— user50849

Відповіді:


17
<VirtualHost ip:80>
   ServerName domain.com
   RedirectMatch permanent ^(.*)$ http://www.domain.com$1
</VirtualHost>

<VirtualHost ip:80>
   ServerName www.domain.com

   ... usual config
</VirtualHost>

7
Для трохи простішого рішення ви можете: "Перенаправити постійний / ptth: //www.domain.com/", і apache автоматично збереже суфікс. (Я перевернув http, щоб відключити автоматичну посилання.)
— Грег Хьюгілл

1
Дійсно? Солодке, я цього ніколи не знав. Я завжди думав, що вам доведеться використовувати RedirectMatch для збереження задніх частин URI
— Дейв Чейні

4

Додайте це до свого httpd.confфайлу:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.mydomain\.com$ [NC]
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301,L]

4

Увімкніть підтримку mod_rewrite, а потім створіть файл .htaccess у кореневій папці для вашого домену із таким вмістом:

<IfModule mod_rewrite.c>
   Options +FollowSymLinks
   Options +Indexes
   RewriteEngine On
   RewriteBase /
   RewriteCond %{HTTP_HOST} ^domain\.com$
   RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
</IfModule>

не забудьте зробити тест RewriteCond нечутливим до справи ...
— Alnitak

Робіть це лише в тому випадку, якщо у вас немає доступу до змін у файл конфігурації apache з якихось причин. .htaccessфайли мають великі накладні витрати, і переписування всередині них значно гірше.
— Джон Далтон

використання Redirect завжди бажано використовувати mod_rewrite для цього завдання.
— Девід Пашлі

3

Якщо ви дійсно хочете, щоб Google використовував певний стиль домену (з веб-сайтом або без нього ), тоді створіть безкоштовний акаунт Google Webmaster Tools , підтвердьте право власності на ваш домен (завантажте файл) та встановіть бажаний домен за допомогою панелі керування в Інтернеті.

Це так просто, і вам не потрібно змінювати жоден код сервера, також вхідні посилання з www або без них будуть розглядатися однаково, збільшуючи PageRank ваших сторінок.

Посилання можуть вказувати на ваш сайт, використовуючи як www, так і не-www версії URL (наприклад, http://www.example.com та http://example.com ). Кращий домен - це версія, яку ви хочете використовувати для свого сайту в результатах пошуку .

Після того, як ви скажете нам своє бажане доменне ім’я, ми врахуємо вашу перевагу під час відображення URL-адрес. Може пройти деякий час, перш ніж ви побачите, що ця зміна повністю відображена в нашому індексі.

Якщо ви не вказали бажаний домен, ми можемо розглядати веб-версії та не-www як окремі посилання на окремі сторінки.


1

У мене була протилежна проблема - люди, які переходять на www.domain.com, коли я просто хочу обслуговувати безпосередньо з домену.com:

<VirtualHost *:80>
   ServerName domain.com

   ... usual config
</VirtualHost>

<VirtualHost *:80>
   ServerName www.domain.com
   ServerAlias sub.domain.com # can also catch some other subdomains
   ServerAlias *.domain.com # or all previously unmatched domains

   Redirect permanent / http://domain.com/
</VirtualHost>

Як зазначав Грег Хьюгілл, використання Redirect трохи простіше, ніж RedirectMatch і виконує ту саму роботу, див. Http://httpd.apache.org/docs/2.0/mod/mod_alias.html#redirect для отримання більш детальної інформації.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.