Як я можу зробити так, щоб мої 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.