我试图在安装了另一个php应用程序的系统中设置Wordpress,使用nginx作为Web服务器。
我已将配置文件简化为maximun。以下confi正在为我的博客发布一篇文章:
server {
listen 80;
server_name blog.ct.com;
root /home/ff/www/blog/;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$uri&$args =405;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_buffer_size 128k;
fastcgi_buffers 64 32k;
fastcgi_busy_buffers_size 128k;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param APPLICATION_ENV development;
fastcgi_param HTTP_X_FORWARDED_PROTO https;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
}
}
但是,由于我的系统要求,我需要在子路径内提供博客(在我的最终系统http://blog.ct.com/中应该提供我的自定义php应用程序,而http://blog.ct.com/vendor应该提供服务wordpress博客)。
wordpress的本地根目录必须是/home/ff/www/blog/
(这不能更改,而我的自定义应用程序的目录是/home/ff/www/myapp/
)。所以我想我需要为我的自定义应用保留location /
,我必须创建一个location /vendor
如果我添加/vendor
并在/
中返回403(只是为了更容易调试),浏览器会显示405(注意=405
中的/vendor
,也要调试更容易):
location /vendor {
try_files $uri $uri/ /index.php?$uri&$args =405;
}
location / {
return 403;
}
所以我认为nginx进入location /vendor
但是没有在/home/ff/www/blog/index.php
找到我的php脚本,所以它返回了回退405。
知道为什么会这样吗?
如何从wordpress加载http://blog.ct.com/vendor作为root用户,但使用另一个php脚本保留http://blog.ct.com/?
答案 0 :(得分:0)
我发现以下提示给了我修复问题的线索(如果有人遇到与我相同的问题,这可能有帮助)
Sub delete()
Dim rngStart As Range
Dim rngEnd As Range
Dim rngDelete As Range
Dim wordOne As String
wordOne = "word1"
Dim wordTwo As String
wordTwo = "word2"
Selection.HomeKey Unit:=wdStory
With Selection.Find
.Text = wordOne
Do While .Execute(Forward:=True, Format:=True) = True
Selection.HomeKey Unit:=wdStory
Selection.Find.Execute FindText:=(wordOne)
Set rngStart = Selection.Range
' At this point the selection = the 'found text'
Selection.Collapse wdCollapseEnd ' set range to end of found text
Selection.Find.Execute FindText:=(wordTwo)
Set rngEnd = Selection.Range
Set rngDelete = rngStart.Duplicate
'rngDelete.Collapse wdCollapseEnd ' Keep wordOne
rngDelete.Collapse wdCollapseStart ' Delete wordOne
'rngDelete.End = rngEnd.Start ' Keep wordTwo
rngDelete.End = rngEnd.End ' Delete wordTwo
rngDelete.Text = " " ' replace rngDelete Text with a space
'rngDelete.Text = vbNullString ' replace rngDelete Text with nothing
Loop
End With
End Sub
与使用location /path
不同(正则表达式具有不同的优先级,因此可能没有按照您认为的顺序进行检查)location ~(/path)
添加到任何error_log /your/path/log/error.log debug;
块可以帮助您了解nginx如何为每个请求提供服务(例如location
location
,fastcgi
或location \vendor
阻止)。server{
的工作方式与alias /var/www/path/vendor
不同(查看Nginx -- static file serving confusion with root & alias);
如果是root指令,则将完整路径附加到根,包括位置部分,而在alias指令的情况下,只有路径中不包括位置部分的部分会附加到别名。
root /var/www/path/vendor
和rewrite
可以帮助您解析您想要的独立于路径的php文件
alias
if (!-f $request_filename) {
rewrite ^ $document_root/index-wp.php last;
}
(请与SCRIPT_FILENAME
一起查看,请参阅上文),也许您需要error_log
但是您正在加载fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
,这取决于您的身份以前的配置,您可能会将文档根附加两次。fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
的两种不同配置。例如。 fastcgi
将与wp.php一起使用,而location ~ wp\.php$ {
将与所有其他php文件一起使用,例如index.php。