我正在尝试修改我的 ht access 文件,以通过https网站(而不是旧网站)重定向访问该网站
下面的ht代码的第一段是访问代码的一部分,它只允许通过根文件页面访问。这部分工作完全。
第二部分是假设将所有内容重定向到HTTPS站点并阻止访问http站点的部分。这不起作用,仍然可以通过http访问该站点。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
#Now, rewrite to HTTPS:
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
我真的会建议如何修改代码。
答案 0 :(得分:0)
尝试从重写规则中删除L
。一旦满足规则,它将停止处理,因此它将始终停止。
更改此
RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L]
到
RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC]
了解这对您有何帮助。
编辑:
如果您只想将所有流量和非https定向到https和索引页面,则下面的代码执行相同的操作。注意我使用了域名。将yoursite.com替换为您的真实网站。看看它是如何工作的。
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC,OR]
RewriteCond %{HTTPS} !^on$
RewriteRule ^(.*)$ https://www.yoursite.com/ [R=301,L]
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !/index.php
RewriteRule ^(.*)$ / [NC,R=301,L]