2009-11-06 13 views
9

biegnę platformę CodeIgniter, który korzysta .htaccess aby zaakceptować URL jak.htaccess przekierowanie non-www do WWW zachowaniu URI ciąg

http://www.mysite.com/controller/function/argument 

Używam obecnie kilka .htaccess przepisuje, a mianowicie (uproszczony):

RewriteEngine On 
RewriteCond %{REQUEST_URI} !^(/index\.php|/images|/assets) 
RewriteRule ^(.*)$ /index.php/$1 [L] 

Chcę dodać regułę przepisywania, która przekierowuje wszystkie żądania bez www do www. Również chcę, aby ciąg znaków URI po nazwie domeny pozostawał taki sam w przekierowaniu. Na przykład, jeśli użytkownik zgłasza żądanie na http://mysite.com/controller/function/argument, chcę, aby plik .htaccess przepisał żądanie w przeglądarce jako http://www.mysite.com/controller/function/argument, a następnie przetworzył żądanie.

Odpowiedz

10

Powinno być coś takiego:

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

Nie będzie to kolidować z moim drugim prawem RewriteRule? Rozumiem twój RewriteCond, nie chcę stosować się do reguł, które już mam. –

+0

Jeśli dodasz mój jako pierwszy, zostanie on aktywowany tylko wtedy, gdy hostem nie jest www.mysite.com. Jeśli jest aktywowany, nastąpi przekierowanie HTTP, a drugie zapytanie HTTP aktywuje twoją własną przeróbkę, jeśli spełnione są warunki. – rossoft

+0

Zobacz więcej informacji tutaj: http://www.webconfs.com/how-to-redirect- a-webpage.php – rossoft

14

miałem podobny problem, a to .htaccess działa dla mnie

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] 
+0

to działa. Co się stanie, jeśli chcę dodać regułę z wyjątkiem blog.example.com nie zostanie przekierowany na stronę www? – Permana

+0

wypróbuj 'RewriteCond% {HTTP_HOST}!^(Www | blog) \. Example \ .com [NC]' – ekhaled

0

Jeśli jesteś na Apache 2.4, można użyć następujących proste przekierowanie:

<if "%{HTTP_HOST} =='example.com'"> 
Redirect/http://www.example.com/ 
</if>