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]