XI
By:
XI

Convert htaccess to nginx rewrite rule

August 14, 2015 21.3k views
Nginx DigitalOcean Apache Ubuntu

I want to convert this to nginx rules

# BEGIN EAP Rewrite
<IfModule mod_rewrite.c>
RewriteEngine on
Options -Multiviews
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)?$ index.php?a=$1  [QSA,NC,L]
ErrorDocument 404 /new/404.php
</IfModule>
# END EAP Rewrite

I have tried several, but no luck.

error_page 404 /new/404.php;
    location / {
        #try_files $uri $uri/ /index.php?$args;
        try_files $uri $uri/ /index.php?a=$args; 
        #rewrite  ^/(.*)?$  /index.php?a=$1 last;
    }

Actually, this line below worked for the URL but real folder paths, like css and js, are not working.

#rewrite  ^/(.*)?$  /index.php?a=$1 last;

Anyone? thanks in advance.

3 comments
  • # nginx configuration 
    error_page 404 /new/404.php; 
    location / { 
       if (!-e $request_filename){ 
          rewrite ^/(.*)?$ /index.php?a=$1 break; 
       } 
    }
    

    http://winginx.com/en/htaccess

  • Thanks for trying @julianlampert
    None of that works.
    I was able to fix it with

    try_files $uri $uri/ /index.php?a=$uri;
    

    after many tries.
    Thanks anyways.

  • RewriteCond %{REQUEST_URI} ^/.*
    RewriteRule ^(.*)$ web/$1 [L]
    
    RewriteCond %{REQUEST_URI} !^/web/
    RewriteCond %{REQUEST_FILENAME} !-f [OR]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^.*$ web/index.php
    
1 Answer

This question was answered by @XI:

Thanks for trying @julianlampert
None of that works.
I was able to fix it with

try_files $uri $uri/ /index.php?a=$uri;

after many tries.
Thanks anyways.

You can see the comment here.

Have another answer? Share your knowledge.