当我导航到不以.php结尾的网址时,我遇到了来自wordpress / nginx的令人沮丧的重定向。例如,在wordpress中更新某些内容后,我可能会重定向到:
http://www.example.com/wp-admin/options-media.php?settings-updated=true # with blog/ ommited
而不是
http://www.example.com/blog/wp-admin/options-media.php?settings-updated=true
我真的很想知道为什么会发生这种情况,并尝试使用location ~ /blog.*
行进行多次变更,但没有成功。
我的域名和博客nginx配置文件如下,我真的很感激任何帮助!
example.com.conf:
upstream blog {
server 127.0.0.1:80;
}
server {
listen 80;
server_name www.example.com direct.example.com;
root /home/webapps/example/live/current/public;
error_log logs/example.com-error.log;
access_log logs/example.com-access.log;
passenger_enabled on;
rails_env production;
passenger_min_instances 3;
passenger_spawn_method smart;
passenger_use_global_queue on;
location ~ /blog.* {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
gzip on;
gzip_min_length 1100;
gzip_buffers 4 8k;
gzip_proxied any;
gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
if (!-f $request_filename) {
#rewrite ^/blog$ /;
rewrite ^/blog/(.*)/$ /blog/$1;
rewrite ^/blog/(.*)$ /$1;
proxy_pass http://blog;
break;
}
}
}
blog.conf:
server {
listen 127.0.0.1:80;
server_name blog.example.com;
error_log logs/blog-error.log;
access_log logs/blog-access.log;
location / {
root /home/blog;
index index.php index.html index.htm;
# this serves static files that exist without running other rewrite tests
if (-f $request_filename) {
expires 30d;
break;
}
# this sends all non-existing file or directory requests to index.php
if (!-e $request_filename) {
rewrite ^(.+)$ /index.php?q=$1 last;
}
}
location ~ \.php$ {
fastcgi_pass localhost:9000; # port where FastCGI processes were spawned
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/blog$fastcgi_script_name; # same path as above
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
# required if PHP was built with --enable-force-cgi-redirect
# required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
}
}
答案 0 :(得分:0)
我有一个类似的问题,结果发现我在Wordpress MySQL数据库中的配置不正确,这是因为我将博客从/ root /移到/ root / blog /。
这是我改变的:
使用PHPMyAdmin或其他任何方式登录WP DB。
在wp_options
表下,检查以下内容:
siteurl : should be -> http://example.com/blog
home : should be -> http://example.com/blog
remote_url : should be -> http://example.com/blog/
请注意斜杠。