【问题标题】:remove index.php from a specific url on Nginx server从 Nginx 服务器上的特定 url 中删除 index.php
【发布时间】:2014-05-06 02:42:08
【问题描述】:

过去几个小时我一直在努力寻找一种体面的方法来从通过 https 提供的特定 URL 中删除 index.php。我要删除 index.php 的原因是,当通过 https 提供 url 时,它可以正常工作并且没有问题。但是,当任何人在 url index.php 末尾键入时,https 可以更改为 http,因此 SSL 在该 url 上是无用的,因为加密信息可以'在那种情况下不做。

这是我之前为使 SSL 工作而提出的问题,但这不包括通过 https My question about SSL for specific url 提供的 index.php

所以现在我有两种选择,但我不知道如何选择。第一个是隐藏通过 https 提供的 url 的 index.php。第二个是对我在my previous question中使用的代码进行一些修改,以便即使在url中输入index.php也可以使用https。

任何帮助将不胜感激,因为我不知道如何在这里做任何事情!

谢谢

更新:当使用 Nginx 文件夹保护“auth_basic 和 auth_basic_user_file”时,我提供的解决方案似乎效果不佳。

【问题讨论】:

  • 能否请您写一个被重定向的错误 URL 的示例。
  • 好的,例如,如果我写 www.mydomain.com/securearea/ ---> 它将是这样的:https : //www.mydomain.com/securearea/ 这很棒。但是,当我最后将 index.php 添加到 url 时,我可以使用 http 手动删除 https,因此 url 不再像这样安全:http://www.mydomain.com/securearea/index.php

标签: url ssl nginx https


【解决方案1】:

令人惊讶的是,我从我所追求的选项中找到了一种解决方案。我得到了第二个选项,而不是第一个,因为我很难强制隐藏/删除 index.php

我所要做的就是强制 SSL 为 index.php 提供服务器 https,并且更改很简单。

原来的代码是:

server {
  listen 80;
  server_name example.com;
  # normal http settings
  location /secure_area/ {
    return 301 https://$http_host$request_uri$is_args$query_string;
  }
}

我得到的改变是这样的:

server {
  listen 80;
  server_name example.com;
  # normal http settings
  location ~* ^/secure_area/ {
    return 301 https://$http_host$request_uri$is_args$query_string;
  }
}

所以变化是从位置/位置~* ^/

我希望它对遇到这个问题的人有用。

【讨论】:

  • 我会说这是一个很好的答案,但请记住 ~* 不区分大小写,这意味着 /SeCuRe_ArEa/ 也会匹配,如果你不想这样,你可以删除它,或改用^~ /secure_area/
  • 谢谢@MohammadAbuShady。我会尝试一下,看看是否可行。我只是担心 auth_basic 和 auth_basic_user_file 模块保护是否有效!!
  • 我刚刚尝试过 ^~ /secure_area/,但是每当我在浏览器上输入该文件时,就会下载该文件。我在 Chrome 和 FF 上都试过了……有什么想法吗?
  • 你的 php 位置是什么? location ?
  • 好吧,这很奇怪,我不知道为什么它不起作用,但是 nvm,就用你的答案,它一样好。
猜你喜欢
  • 1970-01-01
  • 2014-03-08
  • 2015-06-24
  • 1970-01-01
  • 2015-05-13
  • 2017-04-17
  • 1970-01-01
  • 2014-11-25
  • 1970-01-01
相关资源
最近更新 更多