wil*_*lks 7 php uri nginx url-rewriting
我正在用PHP编写一个简单的CMS.页面(降价文件)和图像可以像这样(分别)访问:
example.org/?q=about.md
example.org/?i=photo.jpg
Run Code Online (Sandbox Code Playgroud)
或者,我想使用带有Nginx的干净URL,使相同的请求看起来像这样:
example.org/about
example.org/photo.jpg
Run Code Online (Sandbox Code Playgroud)
我宁愿用try_files比if并rewrite,但经历过了小时后,我无法得到它的工作.
location / {
try_files $uri $uri/ /?q=$uri.md =404;
}
location ~ \.(gif|jpg|png)$ {
try_files $uri /?i=$uri =404;
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么上面的代码不起作用(带参数的网址工作正常,但漂亮的代码有404错误).
使用文件夹名称作为参数传递是否有问题$uri?
我是否需要逃避一些奇怪的角色(除了我的房东)?
为了彻底,我使用标准的nginx.conf运行Nginx 1.6.2.这是我的服务器块的其余部分:
server_name example.org;
root /srv/example/;
index index.html index.htm index.php;
(...)
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
Run Code Online (Sandbox Code Playgroud)
和fastcgi.conf也是标准的.
我只需省略以下内容即可使您的示例正常工作=404:
location / {
try_files $uri $uri/ /?q=$uri.md;
}
location ~ \.(gif|jpg|png)$ {
try_files $uri /?i=$uri;
}
Run Code Online (Sandbox Code Playgroud)
引用手册:
按指定顺序检查文件是否存在,并使用第一个找到的文件进行请求处理;[...]如果未找到任何文件
uri,则会进行到最后一个参数中指定的内部重定向。
您需要内部重定向,只有在没有找到任何文件的情况下才会发生这种情况,但=404总是会找到。
| 归档时间: |
|
| 查看次数: |
1517 次 |
| 最近记录: |