我有一个看起来像这样的电子邮件验证脚本:
http://example.com/v/index.php?t=TOKEN_EMAILED_TO_CLIENT
我希望它看起来像这样:
http://example.com/v/TOKEN_EMAILED_TO_CLIENT
本质上只是删除index.php?t=
URL 的一部分,但仍然允许 index.php 文件处理令牌。
我尝试了以下三种设置,但都没有奏效:
location /v/ {
try_files index.php$args;
}
以上导致失败的 nginx.conf 文件
location ^~ /v/ {
try_files /v/index.php?q=$uri;
}
以上导致失败的 nginx.conf 文件
location ^~ /v/ {
rewrite ^/v/index.php?q=(.*)$ $1 permanent;
}
以上通过了 nginx.conf 文件要求,但仍然没有做我想做的事。访问http://example.com/v/TOKEN_EMAILED_TO_CLIENT时显示 404 错误
任何帮助将不胜感激。
首先,
^~
如果在您定义的位置之前没有任何与此模式匹配的正则表达式,则不需要使用。您要做的基本上是拥有正确的 URI 并重写它们以将参数传递给您的 php 应用程序。在这种情况下,适当的解决方案是使用重写。您在那里错过的事情是您要匹配的 URI 是 rewrite 指令的第一个参数,因此它显然不能匹配
^/v/index.php?q=(.*)$
,因为它等于/v/TOKEN_EMAILED_TO_CLIENT
. rewrite 指令的第二个参数是要重写的 URI。因此,假设您在某处有此类处理
.php
文件的位置:然后你需要这个位置块: