[英]Nginx configuration for a wordpress blog in a subfolder of Symfony root
[英]Nginx: running wordpress in subfolder of a Symfony2 app
我使用nginx運行Symfony2應用程序,並希望將wordpress安裝集成到公共Web文件夾的子文件夾中。
例:
http://www.example.com -> Symfony 2
http://www.example.com/magazin -> Wordpress
使用Symfony應用程序的原始nginx配置,我可以成功地向wordpress的起始頁面以及整個管理區域(包括插件安裝等)發出請求。
但是由於我將wordpress配置為對帖子使用自定義url方案“年/月/標題”,因此請求最終以404結尾。我發現,不是wordpress是獲取請求的應用程序,而是symfony,它當然是不知道該怎么辦。 wordpress為帖子創建的URL是正確的(例如http://www.example.com/magazin/2015/12/my-interesing-post )。
是否可以通過擴展nginx配置的方式來處理特定文件夾“ / magazin /”下的所有請求,如果可以,如何進行?
這是我的nginx配置,目前僅處理Symfony2應用程序:
server {
listen *:80;
server_name www.example.de;
index app.php index.php index.html;
access_log /var/log/nginx/www.example.de.access.log combined;
error_log /var/log/nginx/www.example.de.error.log;
location ~ \.php$ {
root /data/www/www.example.de/current/web;
include /etc/nginx/fastcgi_params;
try_files $uri $uri/ /app.php?$query_string;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index app_prod.php;
fastcgi_param X_FORWARD_PORT "80";
fastcgi_param CUSTOMER_ENV customer_default;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
}
location / {
root /data/www/www.example.de/current/web;
index app.php index.php index.html;
try_files $uri $uri/ /app.php?$query_string;
}
}
擴展到馬爾科姆斯的解釋,這應該做的工作:
(如果您的日志顯示默認nginx目錄的路徑是前置的,則只需再次定義根目錄)
location /magazin {
root /data/www/www.example.de/current/web;
index index.php;
try_files $uri $uri/ /magazin/index.php?q=$uri;
}
另外,我不太確定,但我建議在可能提取此路線的其他任何位置塊之前插入此位置塊(位置/ magazin和之后的位置/)。
如果將symfony2與php7一起使用,則可以嘗試以下配置:
server {
listen *:80;
server_name www.example.com;
root /var/www/example.com/web/;
index index.php index.html index.htm;
access_log off;
location @rewriteapp {
rewrite ^(.*)$ /app.php/$1 last;
}
location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
expires max;
try_files $uri =404;
}
location / {
index app.php;
try_files $uri @rewriteapp;
}
# BLOG AREA START
location @rewriteblog {
rewrite ^(.*)$ /blog/index.php?q=$uri&$args;
}
location @rewriteblogadmin {
rewrite ^(.*)$ /blog/wp-admin/index.php?q=$uri&$args;
}
location = /blog/favicon.ico {
log_not_found off;
access_log off;
}
location = /blog/robots.txt {
allow all;
log_not_found off;
access_log off;
}
location /blog {
# This is cool because no php is touched for static content.
# include the "?$args" part so non-default permalinks doesn't break when using query string
try_files $uri @rewriteblog;
}
location /blog/wp-admin {
# This is cool because no php is touched for static content.
# include the "?$args" part so non-default permalinks doesn't break when using query string
try_files $uri @rewriteblogadmin;
}
# BLOG
location ~ ^/(blog|blog\/wp-admin)/(.*)\.php(/|$) {
try_files $uri =404;
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
fastcgi_intercept_errors on;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
}
# PROD
# This rule should only be placed on your development environment
# In production, don't include this and don't deploy app_dev.php or config.php
location ~ ^/(app|config)\.php(/|$) {
fastcgi_index app.php;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
# return 404 for all other php files not matching the front controller
# this prevents access to other php files you don't want to be accessible.
location ~ \.php$ {
return 404;
}
error_log /var/log/nginx/examplecom_error.log;
access_log /var/log/nginx/examplecom_access.log;
}
您可以使用子文件夾添加location
:
location /magazin {
index index.php;
try_files $uri $uri/ /magazin/index.php?q=$uri;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.