Tuesday, May 8, 2012

.htaccess to nginx rewrite rules excluding certain folders

So im trying to move an application from apache to NginX but I've discovered i need to re write the .htaccess file, I've had a good look around but finally I need to ask for some help.



Below is the .htaccess file from apache, im trying to redirect all requests to index.php except for requests to /html, /css, /images, /php.



Thanks for your help in advance!
Bill



RewriteEngine on 
RewriteRule ^html [L,NC]
RewriteRule ^css [L,NC]
RewriteRule ^images [L,NC]
RewriteRule ^php [L,NC]
RewriteRule ^.*$ index.php [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !directory/(.*)$
RewriteCond %{REQUEST_URI} !(.*)$
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]


So far I have the below and the requests for the html, css, images and php files are working great.



But when i make a request for www.domain.com/blah/blah/blah/ im getting a 404, what i really want is for the URL to reamin as www.domain.com/blah/blah/blah/ but load the index.php file



location ~ directory/(.*)$ {
}

location ~ (.*)$ {
}

location /html {
rewrite ^/html / break;
}

location /css {
rewrite ^/css / break;
}

location /images {
rewrite ^/images / break;
}

location /php {
rewrite ^/php / break;
}

location / {
rewrite ^(.*)$ /index.php break;
if (!-e $request_filename){
rewrite ^(.*)$ http://www.domain.com/$1 redirect;
}
}




No comments:

Post a Comment