Я запускаю платформу CodeIgniter, которая использует .htaccess для приема URL-адресов, таких как
http://www.mysite.com/controller/function/argument
В настоящее время я использую некоторые .htaccess-перезаписи, а именно (упрощенный):
RewriteEngine On RewriteCond %{REQUEST_URI} !^(/index\.php|/images|/assets) RewriteRule ^(.*)$ /index.php/$1 [L]
Я хочу добавить правило перезаписи, которое перенаправляет все запросы без www на www. Я также хочу, чтобы строка URI, следующая за доменным именем, оставалась неизменной при перенаправлении. Например, если пользователь делает запрос на http://mysite.com/controller/function/argument
, я хочу, чтобы файл .htaccess переписывал запрос в браузере как http://www.mysite.com/controller/function/argument
а затем обработать запрос.
Это должно быть примерно так:
RewriteCond %{HTTP_HOST} . RewriteCond %{HTTP_HOST} !^www\.example\.com [NC] RewriteRule (.*) http://www.example.com/$1 [R=301,L]
У меня была аналогичная проблема, и этот .htaccess работает для меня
RewriteEngine On #This bit rewrites your host name to include www RewriteCond %{HTTP_HOST} !^www\.example\.com [NC] RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,NC,L] #This bit does the codeigniter magic RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php/$1 [L]
Если вы используете apache 2.4, вы можете использовать следующее простое перенаправление:
<if "%{HTTP_HOST} =='example.com'"> Redirect / http://www.example.com/ </if>