I'm trying to set up CodeIgniter from an existing site that's on nginx. My local machine is Apache and this is the redirect scheme on nginx. How do I write this using RewriteRules?

    if ($host ~* ^www\.(.*)) {
            set $host_without_www $1;
            rewrite ^(.*)$ http://$host_without_www$1 permanent;
if ($request_uri ~* ^(/welcome(/index)?|/index(.php)?)/?$){
            rewrite ^(.*)$ / permanent;
if ($request_uri ~* index/?$){
            rewrite ^/(.*)/index/?$ /$1 permanent;
if (!-d $request_filename){
            rewrite ^/(.+)/$ /$1 permanent;
if ($request_uri ~* ^/system){
            rewrite ^/(.*)$ /index.php?/$1 last;
if (!-e $request_filename){
            rewrite ^/(.*)$ /index.php?/$1 last;

Something like this:

# These go in the VirtualHost context.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1$1 [R=301,L]

RewriteCond %{REQUEST_URI} ^(/welcome(/index)?|/index(.php)?)/?$ [NC]
RewriteRule ^ / [R=301,L]

RewriteRule ^/(.*)/index/?$ /$1 [R=301,L,NC]

RewriteCond %{REQUEST_URI} ^/system [NC]
RewriteRule ^/(.*)$ /index.php?/$1 [L]

<Directory /path/to/docroot>
    # This is so that these have the correct filesystem path in the
    # REQUEST_FILENAME parameter.
    # If you already have a <Directory> for here, add these to it.

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ $1 [R=301,L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteRule ^/(.*)$ /index.php?/$1 [L]

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.