我正在阅读通过重定向(例如$1?$argument
到$1
)从所有请求中删除查询字符串/参数。
我尝试了文档在添加?
到所需重写结尾时所说的内容,以便删除查询字符串和参数,但这没有效果。
我希望维护当前的功能,并从所有URI请求中删除查询字符串/参数。
与文档附加?
的建议有什么冲突,或者对此有什么正确的解决方案?
# for removing .php from all requests
location / {
try_files $uri $uri/ @extensionless-php;
}
# rewrite to remove .php
location @extensionless-php {
rewrite ^(.*)$ $1.php last;
}
# deny access to php includes
location ~* /includes/(.+)\.php$ {
deny all;
}
# redirect all instances of index.php to / in its respective directory (for example, /index.php to /, and /articles/index.php to /articles/)
location ~* \.php {
try_files $uri =404;
if ($request_uri ~ ^/([^?]*?)(?:(?<=/)index(?:\.php)?|\.php)(\?.*)?$) { return 301 /$1$2; }
fastcgi_pass backend;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
答案 0 :(得分:0)
我看到您正在使用nginx php friendly URL redirection without interfering with index.php causing /index中的解决方案! : - )
如果您还要删除整个$args
/ $query_string
,除了删除index
和.php
之外,请忽略$2
从提供的解决方案;此外,您还可以使用额外的if条件从其他网址中删除args。
index index.php;
if ($request_uri ~ ^/([^?]*?)(?:(?<=/)index(?:\.php)?|\.php)(\?.*)?$) { return 301 /$1; }
if ($request_uri ~ ^/([^?]*)\?) { return 301 /$1; }