我想将“https://www.example.com”和“https://example.com”重写为“http://www.example.com”或“http://example.com”分别'。我只想写网站的特定部分而不是任何子文件夹或php相关页面。我该怎么做?
答案 0 :(得分:7)
我在另一个方向上使用它(没有在这个方向上测试但应该工作)。
if ( $scheme = https )
{
rewrite ^ http://$host$uri;
}
编辑:限制位置并结束不要尝试重写更多:
location / {
if ( $scheme = https )
{
rewrite ^ http://$host$uri last;
}
}
答案 1 :(得分:1)
我使用了类似以下的内容,避免使用IfIsEvil并使用return代替rewrite
。然而它失败了DRY,这让我感到困扰。欢迎提出建议。
server {
listen 80;
server_name .example.com;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock ;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
server {
listen 443 ssl;
server_name .example.com;
ssl_certificate /etc/ssl/certs/example.com.cert;
ssl_certificate_key /etc/ssl/private/example.com.key;
index index.html index.htm index.php;
# Rewrite only / to http
location = / {
return 301 http://$server_name$request_uri;
}
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock ;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
另见