我的Raspberry Pi上安装了Nextcloud。 Https已设置并且重写引擎已启用。到目前为止,重写也在发挥作用。 现在我遇到了以下问题: 如果我在LAN网络中调用我的云,我必须使用内部IP地址(192.168.1.20)并使用Internet通过浏览器访问云,我设置了一个URL。
为了始终拥有正确的URL,我想使用.htaccess文件(以及稍后的IfModule重写)来重写URL。 应重写以下案例:
http://example.com/xyz -> https://www.example.com/xyz
http://www.example.com/xyz -> https://www.example.com/xyz
http://192.168.1.20/xyz -> https://192.168.1.20/xyz
我对语法不太熟悉,所以我尝试了以下内容但没有成功:
RewriteEngine on
# for URL
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !^192.168.1.20
RewriteRule ^https://www.example.com%{REQUEST_URI} [R=301,L,NE]
# for IP
#RewriteCond %{SERVER_NAME} ^192.168.1.20
#RewriteCond %{HTTPS} off
#RewriteRule ^https://192.168.1.20%{REQUEST_URI} [R=301,L,NE]
如果有人能帮助我,我会很高兴...
编辑: 我的“000-default.conf”定义是:
<VirtualHost _default_:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ServerName www.example.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost _default_:443>
DocumentRoot /var/www/html
ServerName 192.168.1.20
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
</IfModule>
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/cloud.crt
SSLCertificateKeyFile /etc/apache2/ssl/cloud.key
</VirtualHost>
我的“default-ssl.conf”定义:
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ServerName=www.example.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/cloud.crt
SSLCertificateKeyFile /etc/apache2/ssl/cloud.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
答案 0 :(得分:0)
同时我自己解决了这个问题!
存在一些语法错误和一些其他问题。 根目录下的&#34; .htaccess&#34; -file中的以下代码适用于我:
RewriteEngine on
# for URL
RewriteCond %{HTTP_HOST} !^www\. [OR]
RewriteCond %{HTTPS} !=on
RewriteCond %{SERVER_NAME} !^192\.168\.1\.20
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L,NE]
# for IP
RewriteCond %{SERVER_NAME} ^192\.168\.1\.20
RewriteCond %{HTTPS} !=on
RewriteRule .* https://192.168.1.20%{REQUEST_URI} [R=301,L,NE]
唯一剩下的问题是https://example.com
未更正为https://www.example.com
,但就我而言,这并不重要......