正如标题所示,这确实是一个很简单的问题。
我进行了一些谷歌搜索,但我似乎只找到有关如何将每个页面重写为 index.php?theurigiven 等的建议。
我只想要一条规则,这样如果有人不小心去了
http://www.example.com/index.php
http://www.example.com/foo/index.php
它将在他们的地址栏中被重写为
http://www.example.com/
http://www.example.com/foo/
ETC
我尝试了一些简单的正则表达式,但它们似乎不起作用,所以我把它精简为
location /index.php {
return 301 /;
}
但那似乎也不起作用?
我猜是因为 nginx 内部正在默默地将“/”重新路由到“/index.php”(或者我在“index”指令中指定的任何内容,以便这些文件可以通过“如果我的页面以.php 结尾并且文件存在,则将其发送到 PHP”块传递给我的 php 处理程序……?
答案1
经过一番折腾,我想我已经得出结论,这不是很好在 nginx 指令中可行。它是可行,但只能使用 if 语句,所有语句都说如果可能的话要避免使用 if 语句。
因此我可能会选择 PHP 路线:
if (substr($_SERVER["REQUEST_URI"],-9)=='index.php') {
Header ('Location: '.substr($_SERVER["REQUEST_URI"],0,-9),true,301);
exit();
}
简单的..?