gpt4 book ai didi

php - nginx 重定向循环,从 url 中删除 index.php

转载 作者:IT王子 更新时间:2023-10-28 23:45:02 26 4
gpt4 key购买 nike

我想要像 http://example.com/whatever/index.php 这样的任何请求,执行 301 重定向到 http://example.com/whatever/

我尝试添加:

rewrite ^(.*/)index.php$ $1 permanent;

location / {
index index.php;
}

这里的问题是,这种重写在根 url 上运行,这会导致无限重定向循环。

编辑:

我需要一个通用的解决方案

http://example.com/ 应该提供文件 webroot/index.php

http://example.com/index.php,应该 301 重定向到 http://example.com/

http://example.com/a/index.php 应该 301 重定向到 http://example.com/a/

http://example.com/a/ 应该在 webroot/a/index.php

处提供 index.php 脚本

基本上,我不想在地址栏中显示“index.php”。我有旧的反向链接,需要重定向到规范的 url。

最佳答案

很好的问题,解决方案 similar to another one I've answered on ServerFault recently ,虽然这里要简单得多,而且您确切地知道自己需要什么。

你想要的是只在用户明确请求 /index.php 时执行重定向,而不是重定向任何最终由实际 index 服务的内部请求.php 脚本,通过 index 指令定义。

应该这样做,避免循环:

server {
index index.php;

if ($request_uri ~* "^(.*/)index\.php$") {
return 301 $1;
}

location / {

# ...
}
}

关于php - nginx 重定向循环,从 url 中删除 index.php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21687288/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com