我想用一个简单的PHP应用程序来configuration一个Wordpress应用程序。 该应用程序的目录结构如下:
根目录:/ var / www / demoApp /
WordPress的目录:/ var / www / demoApp / wordpress /
在这里,我想访问使用路由http:// BASE_URL / WordPress的WordPress的应用程序。 但我无法configurationnetworking服务器。 / var / www / demoApp /目录下的所有php页面都可以正常使用url http:// BASE_URL / 。 虽然WordPress的文件没有正确加载。
这是我的Nginxconfiguration块:
server { listen 80; root /var/www/demoApp; index index.php index.html index.htm; server_name localhost; error_page 500 404 /404.php; location / { try_files $uri $uri/ /index.php?$query_string; } location /wordpress { try_files $uri $uri/ /index.php?$query_string; rewrite ^(.*)$ /wordpress/index.php?$1 last; location ~ \.php { fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_index index.php; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } location ~ \.php$ { try_files $uri /index.php =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
configuration有什么问题?
您对这两个应用程序都使用一个通用的root
,因此嵌套的location ~ \.php
块是不必要的(并且在您的配置中不会被占用)。 请参阅此文档了解更多
try_files
和rewrite
是冲突的,一个try_files
语句就足够了。 详情请参阅此文件 。
你应该尝试这样的事情:
server { listen 80; root /var/www/demoApp; index index.php index.html index.htm; server_name localhost; error_page 500 404 /404.php; location / { try_files $uri $uri/ /index.php?$query_string; } location /wordpress { try_files $uri $uri/ /wordpress/index.php; } location ~ \.php$ { try_files $uri =404; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $request_filename; fastcgi_pass unix:/run/php/php7.0-fpm.sock; } }