【发布时间】:2017-05-27 22:29:25
【问题描述】:
即使在 /etc/nginx/sites-available/default 中添加重定向后,Nginx 也不会重写“/”端点以调用 index.php 作为默认值。
location / {
# try_files $uri $uri/ =404;
try_files $uri $uri/ /index.php?q=$uri&$args;
#index index.html index.htm index.php;
#try_files $uri $uri/ /index.php?$args;
}
我在访问 my-site.com 时收到 403 Forbidden,但它在 my-site.com/index.php 上正常工作, 也是如此mysite.com/phpmyadmin/index.php。此外,重定向似乎适用于 index.html,但不适用于 index.php。
/etc/nginx/sites-available/默认
server {
listen 80;
listen [::]:80;
server_name my-site.com www.my-site.com;
return 301 https://$server_name$request_url;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
include snippets/ssl-my-site.com.conf;
include snippets/ssl-params.conf;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name my-site.com;
location / {
# try_files $uri $uri/ =404;
#try_files $uri $uri/ /index.php?q=$uri&$args;
try_files $uri $uri/ /index.php?q=$uri&$args;
#index index.html index.htm index.php;
#try_files $uri $uri/ /index.php?$args;
}
location ~ [^/].php(/|$) {
fastcgi_split_path_info ^(.+?.php)(/.*)$;
if (!-f /var/www/html$fastcgi_script_name) {
return 404;
}
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
#fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_read_timeout 300;
}
location ~ /.ht {
deny all;
}
location ~ /.well-known {
allow all;
}
location /phpmyadmin {
index index.php;
}
# Rewrite rules for WordPress Multi-site.
if (!-e $request_filename) {
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
rewrite ^/[_0-9a-zA-Z-]+(/wp-.*) $1 last;
rewrite ^/[_0-9a-zA-Z-]+(/.*\.php)$ $1 last;
}
}
# redirect www to non-www
server {
listen 443;
listen [::]:443;
server_name www.my-site.com;
return 301 https://my-site.com$request_uri;
}
【问题讨论】:
-
看来你可以留在
location /没有重定向。删除location后它会工作吗? -
使用
nginx -T测试您的配置。该行为与您的配置不一致。
标签: redirect nginx digital-ocean