Gom*_*mez 48 regex rewrite nginx
我尝试在每个网址结尾处获得一个"/":
example.com/art
应该
example.com/art/
我使用nginx作为webserver.
我需要重写规则..
为了更好地理解,请检查:
http://3much.schnickschnack.info/art/projekte
如果你按下大图下的一个小缩略图,它会重新加载并显示这个网址:
http://3much.schnickschnack.info/art/projekte/#0
如果我现在在所有网址上都有一个斜杠(最后),那么无需重新加载网站即可.
现在我在nginx-http.conf中有这个设置:
server {
listen *:80;
server_name 3much.schnickschnack.info;
access_log /data/plone/deamon/var/log/main-plone-access.log;
rewrite ^/(.*)$ /VirtualHostBase/http/3much.schnickschnack.info:80/2much/VirtualHostRoot/$1 last;
location / {
proxy_pass http://cache;
}
}
Run Code Online (Sandbox Code Playgroud)
如何配置nginx以添加斜杠?(我想我应该重写规则?)
小智 104
更有可能我认为你会想要这样的东西:
rewrite ^([^.]*[^/])$ $1/ permanent;
Run Code Online (Sandbox Code Playgroud)
正则表达式转换为:"重写所有URI而不使用任何'.' 在它们中没有以'/'结尾的URI +'/'"或简单地说:"如果URI没有句点并且没有以斜杠结尾,则在末尾添加斜杠"
仅重写URI而没有点的原因使得任何具有文件扩展名的文件都不会被重写.例如你的图像,CSS,JavaScript等,并防止可能的重定向循环,如果使用一些自己的重写的PHP框架也
另外一个常见的重写是:
rewrite ^([^.]*)$ /index.php;
Run Code Online (Sandbox Code Playgroud)
这非常简单地将所有没有句点的URI重写到index.php(或者你将执行控制器的任何文件).
Mar*_*arc 24
rewrite ^([^.\?]*[^/])$ $1/ permanent;
Run Code Online (Sandbox Code Playgroud)
避免使用/标记的休息URL的查询字符串.
例如
/ myrest /办?d = 12345
对于nginx:
rewrite ^(.*[^/])$ $1/ permanent;
Run Code Online (Sandbox Code Playgroud)
奇怪的是,这是谷歌的第一个结果,但没有令人满意的答案。我知道有两种很好的方法可以做到这一点。第一个是直接检查请求是否会命中文件,如果不是,则仅应用重写条件。例如
server {
# ...
if (!-f $request_filename) {
rewrite [^/]$ $uri/ permanent;
}
location / {
# CMS logic, e.g. try_files $uri $uri /index.php$request_uri;
}
# ...
}
Run Code Online (Sandbox Code Playgroud)
第二个,许多人更喜欢,因为如果不是 100% 必要,他们宁愿避免使用任何使用,是使用 try_files 在它不会命中文件时将请求发送到命名的位置块。例如
server {
# ...
location / {
try_files $uri $uri/ @cms;
}
location @cms {
rewrite [^/]$ $uri/ permanent;
# CMS logic, e.g. rewrite ^ /index.php$request_uri;
}
# ...
}
Run Code Online (Sandbox Code Playgroud)
Mor*_*075 -4
尝试这个:^(.*)$ http://domain.com/$1/ [L,R=301]
这会将不带“/”的所有内容 ($1) 重定向(状态代码 301)到“$1/”
| 归档时间: |
|
| 查看次数: |
63517 次 |
| 最近记录: |