简体   繁体   中英

htaccess to nginx rewrite issue

In my code I am trying to convert Apache .htaccess into Nginx using online convertor. I even edited this file etc/nginx/conf.d/domainname.conf but the rewrite URLS won't work. I have two htaccess files, one of which used in root folder and the second one used in administration folder of my script.

Here is the root's htaccess file content

RewriteEngine On
RewriteRule ^([a-zA-Z0-9-/]+)$ index.php?slug=$1
RewriteRule ^([a-zA-Z0-9-/]+)/$ index.php?slug=$1

htaccess converted code for Nginx

location / {
  rewrite ^/([a-zA-Z0-9-/]+)$ /index.php?slug=$1;
  rewrite ^/([a-zA-Z0-9-/]+)/$ /index.php?slug=$1;
}

Here is the administration folder htaccess file content

RewriteEngine On
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* $0.php [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)index\.php($|\ |\?)
RewriteRule ^(.*)/$ /$1.php [L,R=301]

Administration folder htaccess converted code for Nginx

location /administration {
  if (!-e $request_filename){
    rewrite ^(.*)$ /$0.php break;
  }
  rewrite ^/(.*)/$ /$1.php redirect;
}

I pasted the converted content into domainname.conf (domainname is my domain) and restart the ngnix but it won't work at all. I don't know whether my converted code is accurate or not or any thing else I am missing through it.

Simply edit the file ie etc/nginx/conf.d/yourdomain.tld.conf and look for the following code like this:

#location / {
#Uncomment 3 lines and set your rules here!
#}

You need to un-comment these 3 lines of code or paste this code instead:

location / {
    if (!-e $request_filename) {
    rewrite ^/([a-zA-Z0-9-/]+)$ /index.php?slug=$1;
    rewrite ^/([a-zA-Z0-9-/]+)/$ /index.php?slug=$1;
    }
}

location /administration/ {
    if (!-e $request_filename){
    rewrite ^(.*)$ $1.php last;
    }
}

Then you must require to restart Nginx , if restarted without any errors it will work accurately otherwise Nginx will stop working, this step is important.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM