Nginx重写规则子文件夹404错误

我不知道如何设置我的index.php文件与Nginx的重写规则,它会像下面的例子一样工作。

如果我访问的url,它给了我404错误没有findinstad回声'你好'。

url:

http://www.example.com/directory/sub-directory/ 

/子目录/从给定的URL实际上不是真正的目录里面/目录/。 如果我访问的URL,我得到了404错误 – 这是真的好,但/子目录/是友好的url(没有查询?参数=价值)。

/子目录/不是固定值(在这个例子下面),它可以是/子目录 – 新/ – 依赖。

那么,对于URL中的/ value / after / directory /中的任何值,如果我访问那种types的URL,怎么会不会得到404错误?

/ directory /中的Index.php

 $actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; $wanted = "sub-directory"; $tokens = explode('/', $actual_link); $result = $tokens[sizeof($tokens)-2]; // result is "sub-directory" if($wanted == $result) { echo "hello"; } 

Nginx的:

 location /directory { try_files $uri $uri/ /directory/$uri; error_page 404 =200 /directory } 

我应该为规则添加一些参数,如:location / directory $ 1? 如果是这样,哪一个,如何得到它的工作?

任何人有一些想法?

感谢分享和信息!

在nginx中做友好URL的通常方式是这样的:

 location /directory { try_files $uri $uri/ @rewrites; } location @rewrites { rewrite ^ /directory/index.php; } 

此configuration假定您的root指令指向/directory所在的/directory

所以,在这里,如果文件或目录存在于真正的文件系统中,nginx将首先尝试。 如果该文件不存在,则将请求转发给您的PHP文件。 当然,你需要让你的PHP处理模块在nginx中正确configuration。