Htaccess to nginx, real nightmare - Any advice?


I’m using Nginx from 3 weeks for wordpress and scripts like
phplinkdirectory. Unfortunately i’m still noob converting htaccess rules
nginx and sometimes a simple conversion is a real nightmare. I cannot
this conversion from htaccess to nginx and i hope to find someone to
me to the right direction.

htaccess code:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^(.+)~s$
RewriteRule ^(.) stats.php?u=$1 [L]
RewriteCond %{REQUEST_URI} ^(.+)~d$
RewriteRule ^(.
) delete_file.php?u=$1 [QSA,L]
RewriteCond %{REQUEST_URI} ^(.+)~i$
RewriteRule ^(.) share_file.php?u=$1 [QSA,L]
RewriteCond %{REQUEST_URI} ^(.+)~f$
RewriteRule ^(.
) view_folder.php?f=$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !.html$
RewriteRule ^(.) file_download.php?u=$1 [QSA,L]
RewriteRule ^(.
).html$ $1.php [QSA,L]

Nginx code (i’m using it on a subdomain, my server is centos 6.3 +
virtualmin + nginx + fastcgi. Server is already configured and 100%

server {
root /home/mysite/domains/;
access_log /var/log/virtualmin/download.mysite.com_access_log;
error_log /var/log/virtualmin/download.mysite.com_error_log;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_FILENAME
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
location ~ .php$ {
try_files $uri =404;
fastcgi_pass localhost:9003;
location / {
index index.html index.htm index.php;
if (!-f $request_uri) { rewrite ^/([^/]+)~s
/stats.php?u=$1 last;}
if (!-f $request_uri) { rewrite ^/([^/]+)~d
/delete_file.php?u=$1 last;}
if (!-f $request_uri) { rewrite ^/([^/]+)~i
/share_file.php?u=$1 last;}
if (!-f $request_uri) { rewrite ^/([^/]+)~f
/view_folder.php?u=$1 last;}
if (!-f $request_filename) { rewrite ^/([^/]+)
/file_download.php?u=$1 last;}
#rewrite html to php
rewrite ^(.*).html$ $1.php break;

I have other domains (wordpress, phplinkdirectory) and they work well
nginx. The only problem is converting this subdomain htaccess to nginx.
seems correct (virtualmin accept it and doesn’t return errors) but in
practise this code is completely incorrect. rewrite is 1/2 working, i’m
having a lot of loops and a lot of php pages (rewrite php to html)
processed (i see only the source or the browser download my PHP page
of rendering it.)

Any advice ? Thanks in advance.

Posted at Nginx Forum: