我的主网站和wordpress在我的服务器上的不同目录中使用nginx作为Web服务器。主要网站位于/ home / me / www,Wordpress位于/ home / me / wordpress。出于特殊原因,我需要以这种方式将它们放在单独的目录中。如何在nginx配置文件中指定它?我目前有以下内容,但不起作用:
location / {
root /home/me/www;
index index.php index.html index.htm;
}
location /blog {
root /home/me/wordpress;
index index.php index.html index.htm;
}
location ~ \.php$ {
set $php_root /home/me/www;
if ($request_uri ~ /blog) {
set $php_root /home/me/wordpress;
}
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $php_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
当我尝试访问http://mydomain/blog
时,它当前返回HTTP 404答案 0 :(得分:12)
尝试将blog
行更改为:
location ^~ /blog/ {
root /home/me/wordpress;
index index.php index.html index.htm;
}
答案 1 :(得分:2)
我现在挣扎了好几个小时,最后达到了以下工作配置:
location /php-app {
passenger_enabled off;
alias /path/to/php-app/$1;
index index.php index.html;
try_files $uri $uri/ @rewrite;
}
location @rewrite {
rewrite ^/php-app(.*)$ /index.php?q=$1 last;
}
location ~ \.php$ {
alias /path/to/php-app/$1;
rewrite ^/php-app(.*)$ $1 last;
passenger_enabled off;
fastcgi_pass unix:/tmp/php-fpm.socket;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME /path/to/php-app$fastcgi_script_name;
fastcgi_intercept_errors on;
}
答案 2 :(得分:0)
只需在@Nick Presta答案中添加更多细节。
^〜:如果存在carat和tilde修饰符,并且如果选择此块作为最佳非正则表达式匹配,则不会进行正则表达式匹配。