[英]Nginx: Wordpress as subdirectory on Rails site routes incorrectly
當我導航到未以.php結尾的URL時,我遇到了來自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 conf文件位於下面,對此我將非常感謝!
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;
}
}
我曾經有過類似的問題,結果發現我在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/
注意斜杠。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.