我正在尝试将整个网站重定向到https://,同时隐藏部分URL。
我的根看起来像这样:
/mywebsite
/subfolder_1
/subfolder_2
/subfolder_3
............
到目前为止,我设法隐藏了URL部分以及文件扩展名:
Options +MultiViews
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^mywebsite\.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^mywebsite\.com$
RewriteCond %{REQUEST_URI} !subfolder_1/*
RewriteRule (.*) /subfolder_1/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
但是在隐藏URL部分的同时重定向到HTTPS时遇到了问题。
我尝试了
RewriteRule ^(.*)$ https://www.mywebsite.com/$1 [R,L]
但是,如果我使用此功能,所有其他更改似乎都不适用,从而使整个URL可见(mywebsite.com/subfolder_1/index.php
而不是mywebsite.com/index.php
)。
有什么想法吗?我已经尝试了一段时间,看来我找不到合适的解决方案。
答案 0 :(得分:1)
您可以使用以下规则:
Options +MultiViews
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]
RewriteCond %{REQUEST_URI} !/subfolder_1/ [NC]
RewriteRule .* /subfolder_1/$0 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]