Назад | Перейти на главную страницу

Есть ли преимущество в перенаправлении перед перезаписью при «сокрытии» префикса домена «www»?

Используя виртуальные хосты, я привык использовать это:

<VirtualHost: *:80>
    ServerName www.example.com
    Redirect permanent / http://example.com/
</VirtualHost>

Тем не менее, я часто вижу, что вместо этого используется переписывание:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

Есть ли преимущества у одного подхода перед другим?

Эти две директивы приводят к тому, что один и тот же код 301 отправляется обратно в браузер. Так что никакой пользы ни для одного, ни для другого. Вы должны выбрать тот, который вам удобнее использовать и который облегчит чтение файла конфигурации.

Оба могут также отправлять что-то, кроме кода 301 (постоянное перенаправление). Вы всегда должны использовать 301, когда убираете (или требуете) www для ясности для SEO и браузеров. Остальные типы переадресации используются реже (очень редко); "временное перенаправление" является наиболее распространенным из них, и его следует использовать только в том случае, если место назначения перенаправления будет часто меняться (например, ссылка на вашу последнюю запись в блоге или что-то в этом роде).

Если вам не нужен mod_rewrite, не используйте его. Для таких простых случаев вполне достаточно mod_alias, и его гораздо проще понять. Кроме того, хотя и незначительный, mod_alias быстрее, чем mod_rewrite - это может иметь значение на сайтах с большим объемом.