小编wil*_*lks的帖子

Nginx干净的网址,如何使用try_files将文件夹重写为参数

我正在用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_filesifrewrite,但经历过了小时后,我无法得到它的工作.

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也是标准的.

php uri nginx url-rewriting

7
推荐指数
1
解决办法
1517
查看次数

pip安装的两个模块同名,如何选择加载哪一个?

我正在编写一个依赖于特定模块的python程序rtmidi, . 事实是,PyPI 中至少有两个不同的包有一个具有该名称的模块:rtmidipython-rtmidi。它们提供几乎相同的功能,但具有不同的语法。

当仅安装“正确”的软件包时,一切正常。但是,如果安装了这两个软件包,则使用import rtmidi会加载“错误”的模块,并且我的程序会崩溃。让它再次工作的唯一方法是卸载这两个软件包,然后重新安装正确的软件包。当然,由于用户可能依赖其他模块来执行其他程序,因此我不能指望他们这样做。

尝试识别模块会rtmidi.__name__给出与两个包相同的结果。

所以我的问题是,我该如何解决这个名称冲突问题?有没有最佳实践方法来处理这个问题?

python pip python-module pypi

4
推荐指数
1
解决办法
2372
查看次数

标签 统计

nginx ×1

php ×1

pip ×1

pypi ×1

python ×1

python-module ×1

uri ×1

url-rewriting ×1