Answer the question
In order to leave comments, you need to log in
How to redirect directories in nginx?
Raised the site on nginx, but the 301st redirect from the folder does not work.
Those. the path example.com/folder/ works, but
without the slash example.com/folder gives a 403 error even though the directory is in place and open for reading.
server {
listen <server-ip>:443;
server_name www.example.com;
ssl on;
ssl_certificate /home/user/conf/web/ssl.example.com.pem;
ssl_certificate_key /home/user/conf/web/ssl.example.com.key;
return 301 https://example.com$request_uri;
}
server {
listen <server-ip>:443;
server_name example.com;
root /home/user/web/example.com/public_html;
index index.php index.html;
access_log /var/log/nginx/domains/example.com.log combined;
access_log /var/log/nginx/domains/example.com.bytes bytes;
error_log /var/log/nginx/domains/example.com.error.log error;
ssl on;
ssl_certificate /home/user/conf/web/ssl.example.com.pem;
ssl_certificate_key /home/user/conf/web/ssl.example.com.key;
location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?q=$1 last;
}
location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|css|js)$ {
expires 1M;
}
location ~ [^/]\.php(/|$) {
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
}
}
error_page 403 /error/403.html;
error_page 404 /error/404.html;
error_page 500 502 503 504 /error/50x.html;
location /error/ {
alias /home/user/web/example.com/document_errors/;
}
location ~* "/\.(htaccess|htpasswd)$" {
deny all;
return 404;
}
include /etc/nginx/conf.d/phpmyadmin.inc*;
include /etc/nginx/conf.d/phppgadmin.inc*;
include /etc/nginx/conf.d/webmail.inc*;
include /home/user/conf/web/snginx.example.com.conf*;
}
Answer the question
In order to leave comments, you need to log in
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?q=$1 last;
}
Breaks the default behavior of nginx on this topic. From the point of view of if -e folder does not exist, only folder/ exists, so the request goes to php.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question