我需要你帮助解决以下问题,我将从apache迁移到NGINX 我需要做以下两个我已经在apache上做的问题:
我需要将所有请求从http重定向到https,不包括特定页面。 我添加到80并尝试重定向所有请求而不是product.html页面但是无法正常工作
server {
listen 80;
server_name www.example.com;
rewrite ~!.*/product.html https://$host$1 permanent;
}
我有以下代码:
<Location ~ "/user/language/(\w+)/current">
SetEnvIf Request_URI "/user/language/(\w+)/current$" CURRENT=$1
Header append Set-Cookie "Path=/user/language/%{CURRENT}e;"
Header edit Set-Cookie "^Path=/user/language/.*$" ""
</Location>
我不知道如何转换它?
答案 0 :(得分:0)
Re:您的问题#1 - 将所有请求重定向到https,除了&#34; product.html&#34;页:
server {
listen 80;
server_name www.example.com;
root /path/to/your/web/root;
location = /product.html {
try_files $uri =404;
}
location / {
return 301 https://www.example.com$request_uri;
}
}
以上是直截了当的。使用2个位置块 - 一个用于匹配不要重定向的确切页面,并提供该页面;第二个匹配以/开头的所有请求(即所有请求)并重定向到 https 。 &#34; product.html&#34;页面将完全匹配第一个位置块。所有其他请求都会进入第二个块。
nginx核心模块(&#34; ngx_http_core_module&#34;)提供了有关如何使用各种正则表达式和匹配字符串来使用位置块的示例:
回复:你的问题#2:你可能想学习一些关于如何在nginx中使用 add_header 并测试你的结果的例子,然后回过头来问一个关于你有问题的细节的单独问题用。这是&#34; ngx_http_headers_module&#34; nginx文档中的页面:
有一堆StackOverflow问题提供了有关如何设置cookie的详细信息。你可能想先研究它们。如果您可以提供一些您尝试但可能无效的代码,那么其他人可以更轻松地帮助您回答您的问题。