我在 Ubuntu 12.04 上的 apache2(端口 80)上设置了一个 wordpress 博客,我还在端口 8080 上设置了一个 nginx 来监听同一个博客。我的问题是,每当我尝试在端口 8080 上打开博客时,nginx 都会将请求重定向到 apache,这是不应该发生的。我正在发布 /etc/nginx/sites-enabled/wordpress 的内容
server {
listen 8080;
root /var/www;
index index.php index.html index.htm;
server_name foobartech.strangled.net:8080;
location / {
try_files $uri $uri/ /index.php?q=$uri&$args;
}
location /doc/ {
alias /usr/share/doc/;
autoindex on;
allow 127.0.0.1;
deny all;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/www;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SERVER_PORT 8080;
port_in_redirect off;
}
我还设置了 cgi.fix_pathinfo=0
在 /etc/php5/fpm/php.ini 中
答案1
这是 WordPress 的一个限制。它会遵循您在选项中设置的 URL,因此每个请求/链接都会重定向到站点 URL,默认情况下使用端口 80。
答案2
我解决了!方法如下:
编辑当前主题的 function.php 并在打开 php 标签后添加以下行 remove_filter('template_redirect','redirect_canonical'); 保存并退出
现在打开 wp-includes/ms-settings.php 并找到以下行(行号:~23)
if ( !isset( $current_site ) || !isset( $current_blog ) ) {
在此行之后添加:
$_SERVER['HTTP_HOST'] = preg_replace( '|:\d+$|', '', $_SERVER['HTTP_HOST'] );
然后保存并退出。重新启动 apache2 和 nginx,并使用 curl -I IP 检查请求是否被重定向。