2011-10-04 80 views
2

當我導航到不以.php結尾的網址時,我正在經歷來自wordpress/nginx的令人沮喪的重定向。例如更新的WordPress的事情後,我可能會被重定向到:的Nginx:Wordpress作爲Rails網站路徑上的子目錄不正確

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; 
    } 
} 

回答

0

我在一個點上也有類似的問題,原來,我在WordPress的MySQL數據庫的配置是不正確的,這是由於我將博客從/ root /移動到/ root/blog /。

這是我改變:

登錄到WP DB使用phpMyAdmin或什麼的。

wp_options表檢查以下內容:

siteurl : should be -> http://example.com/blog 
home  : should be -> http://example.com/blog 
remote_url : should be -> http://example.com/blog/ 

注意斜線。

相關問題