我敢肯定这是一个简单的例子,但我想对此有所了解。我有一个正在运行plex介质服务器的vm,并且正在尝试为此设置mod_rewrite。我想建立HTTP连接-> SSL-> Plex
保持简单,没有SSL,以下工作
ServerName Plex
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyRequests Off
ProxyPreserveHost On
RewriteCond %{HTTPS} !=on
ProxyPass / http://127.0.0.1:32400/
ProxyPassReverse / http://127.0.0.1:32400/
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/web
RewriteCond %{HTTP:X-Plex-Device} ^$
RewriteRule ^/$ /web/$1 [R,L]
这让我进入
http://plex/
改写为
http://plex/web
并删除我的端口号,现在,如果我与上述相同,并在第9行和第10行使用https,则中断了重写。
有趣的是,如果我使用
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyRequests Off
ProxyPreserveHost On
RewriteCond %{HTTPS} !=on
ProxyPass / http://127.0.0.1:32400/
ProxyPassReverse / http://127.0.0.1:32400/
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/web
RewriteCond %{HTTP:X-Plex-Device} ^$
RewriteRule ^/?(.*) https://%{SERVER_NAME}:32400/web/$1 [R,L]
这可以正常工作,但不会删除端口号。我了解这是因为我将其包括在重写规则中。
因此,我的问题实际上有两个方面。
A)为什么在第9行和第10行使用https代替http不能按预期工作?
B)在使用重写规则时转发http-> https的正确设置是什么?
蒂亚
最佳答案
尝试使用%{HTTP_HOST}而不是%{SERVER_NAME}