当前位置: 首页 > 面试题库 >

nginx重定向循环,从网址中删除index.php

林英朗
2023-03-14
问题内容

我想要任何类似的请求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/ 应该在以下位置提供index.php脚本 webroot/a/index.php

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


问题答案:

很好的问题,我最近在ServerFault上回答了与另一个解决方案类似的解决方案,尽管这里的解决方案要简单得多,而且您确切地知道需要什么。

您想要的是仅在用户显式请求时执行重定向/index.php,而从不重定向最终由实际index.php脚本处理的内部请求(如通过index指令定义)。

应该这样做,避免循环:

server {
    index index.php;

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

    location / {

        # ...
    }
}


 类似资料:
  • 问题内容: 我要在我的一个项目中对分页进行ajax化,并且由于我希望用户能够为当前页面添加书签,因此我通过哈希附加页面编号,例如: 多数民众赞成在它工作正常,一切,除了,当页码为1,我不想成为,我只是希望它成为 我尝试了以下变体: 的作品,但网址现在就像,我不很哈希那里。 根本不使用window.location.hash,但是当用户从第3页回到第1页时,他位于第1页,但是url仍然是因为我没有弄

  • 问题内容: 我要在我的一个项目中对分页进行ajax化,并且由于我希望用户能够为当前页面添加书签,因此我通过哈希附加页面编号,例如: 并且多数民众赞成在它工作正常,一切,除了,当页码为1时,我不想成为,我只是希望它成为 我尝试了以下变体: 的作品,但网址现在就像,我不很哈希那里。 根本不使用window.location.hash,但是当用户从第3页回到第1页时,他位于第1页,但是url仍然是因为我

  • 问题内容: 当用户输入无效的url时,如何使node.js服务器将用户重定向到404.html页面? 我做了一些搜索,看起来大多数结果都是针对Express的,但是我想用纯node.js编写我的服务器。 问题答案: 确定“错误” URL的逻辑特定于您的应用程序。如果您正在执行RESTful应用,则可能是一个简单的文件未找到错误或其他错误。一旦弄清楚了,发送重定向就很简单:

  • 所以我正在尝试创建这个循环,它可以从ArrayList中移除给定字符串中的特定字符。问题是,当一行中有两个相同的字符时,它会遗漏第二个字符,因为当第一个字符被移除时,第二个字符会在数组列表中向下推一个位置。这是我目前所掌握的。有人知道怎么解决这个吗?我仍然是java的初学者,所以任何帮助都将非常感谢。 从本例中打印出来的内容在:[u,B,u,o,p]之后,而我希望它在:[u,u,o,p]之后

  • 我找不到我的谜题。当我加载页面时,chrome会说:localhost页面不工作,localhost重定向了你太多次。我猜这是在创造一个循环。我可能做错了一些我无法得到的事情。这是我的密码。 授权控制器 模型 Authenticate.php config/auth.php

  • 我正在使用Google OAuth连接到仪表板,问题是当