Nginx under Wordpress permalinks achieve of 301 404 etc

  • 2020-05-06 12:18:32
  • OfStack

It is also very simple to modify the nginx.conf file and add the following:


location / {
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
}

Just restart nginx.

Here is an example of my configuration file:

www# cat nginx.conf

user   www www;
worker_processes   10;

#error_log   logs/error.log;
#error_log   logs/error.log   notice;
#error_log   logs/error.log   info;

#pid               logs/nginx.pid;

events {
worker_connections   1024;
}

http {
include             mime.types;
default_type   application/octet-stream;

#log_format   main   '$remote_addr - $remote_user [$time_local] $request '
                '" $status "$body_bytes_sent" $http_referer "'
                        '" $http_user_agent" "$http_x_forwarded_for" ';

#access_log   logs/access.log   main;

sendfile               on;
#tcp_nopush         on;

#keepalive_timeout   0;
keepalive_timeout   65;

#gzip   on;

server {
listen             80;
server_name   localhost;

#charset koi8-r;

#access_log   logs/host.access.log   main;

location / {
root     /usr/local/www/nginx;
index   index.php index.html index.htm;
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}

}

#error_page   404                           /404.html;

# redirect server error pages to the static page /50x.html
#
error_page     500 502 503 504   /50x.html;
location = /50x.html {
root     /usr/local/www/nginx-dist;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
#       proxy_pass     http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root                     html;
fastcgi_pass     127.0.0.1:9000;
fastcgi_index   index.php;
fastcgi_param   SCRIPT_FILENAME   /usr/local/www/nginx$fastcgi_script_name;
include               fastcgi_params;
}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
#       deny   all;
#}
}

# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
#       listen             8000;
#       listen             somename:8080;
#       server_name   somename   alias   another.alias;

#       location / {
#               root     html;
#               index   index.html index.htm;
#       }
#}

# HTTPS server
#
#server {
#       listen             443;
#       server_name   localhost;

#       ssl                                   on;
#       ssl_certificate           cert.pem;
#       ssl_certificate_key   cert.key;

#       ssl_session_timeout   5m;

#       ssl_protocols   SSLv2 SSLv3 TLSv1;
#       ssl_ciphers   ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
#       ssl_prefer_server_ciphers     on;

#       location / {
#               root     html;
#               index   index.html index.htm;
#       }
#}
}


Related articles: