URL Каноникализация (.htaccess)

Я хотел бы использовать мой файл.htaccess, чтобы добавить "www." на все URL, если есть запрос без него, но я надеюсь, что я могу сделать это без определения домена, так как я хотел бы использовать этот код на многих сайтах без необходимости его редактирования. Это возможно?

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteBase /

    RewriteRule ^sitemap\.xml/?$ sitemap.php [L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule ^(.*)$ index.php?filename=$1 [L,QSA]
</IfModule>

3 ответа

Извините, я не могу ответить на ваш ответ конкретно. Я рекомендую делать это с вашим выбором серверной части кода.

В php вы бы сделали что-то вроде...

$host = !empty($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'];
$url = explode(".", $host);
if (count($url) == 2){
    //no subdomain found
    redirect("www.".$host);
}

Обновление: это будет иметь проблемы с доменными именами, такими как example.co.uk, не уверен, что это проблема..... Я все еще пытался поддерживать субдомены на вашем сайте (следовательно, не просто проверка на www и добавление),

HTML 5 Boilerplate использует это:

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Это добавит "www." даже если там уже есть поддомен.


RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
Другие вопросы по тегам