Я настроить правило перезаписи для того, чтобы направлять трафик на domain.com
www.domain.com
с помощью следующего правила:Apache .htaccess RewriteRule не включая поддиректории при перенаправлении не-WWW на WWW URL
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase/
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
Из моего ограниченного понимания, $1
в RewriteRule
должен соответствовать чему-либо после domain.com/
, а затем быть размещен в конце моего переписанного URL-адреса www.domain.com/
.
Например, domain.com/abc
должно быть www.domain.com/abc
.
Однако это не работает. Если я перейду к domain.com/abc
, то этот путь не переписан вообще, и я просто получаю domain.com/abc
без www
.
Я много читал, чтобы понять, что $1
должен заботиться об этом, исходя из моего понимания.
Может кто-нибудь объяснить, почему он не работает, поскольку я подозреваю, что это должно быть? Благодарю.
Это означает, что это правило не выполняется вообще. Прокомментируйте строки 'IfModule' и повторите проверку. – anubhava
Он также будет зависеть от контекста, где вы указали это. Если ваш запрос не попадает в конкретный виртуальный хост, где вы его указали, это не повлияет и на него, и т. Д. Это очень сложный способ сделать что-то, указав правильное «имя_сервера» в виртуальном хосте и установив директиву «UseCanonicalName» на 'в виртуальном хосте должно быть достаточно. –
Работает, за исключением '$ 1'. Как и раньше, до того, как я установил это правило, я не перенаправляюсь из 'domain.com', и как только я устанавливаю это правило, я перенаправляюсь на' www.domain.com'. Однако подкаталоги не работают, и здесь возникает путаница. – jamesmarkcook