所以我的网站存放在public_html / www /中。其他一些域存储在例如public_html / test /中。在public_html中,我有一个.htaccess文件,里面有很多重定向,这些文件都适用于/ www /文件夹里面的这个网站。在/ www /文件夹里面我有另一个.htaccess(我真的不知道为什么,我的同事这样做了,他没有信息就给我留下了这个)。由于我不知道.htaccess究竟是如何工作的,我不知道该做什么以及在哪个文件中。
我需要做的是将domain.nl重定向到https://www.domain.nl(应排除某些文件夹,您可以在下面的代码中看到 - emailtemplates,paymentupdate,autocode,nieuwsbrieven等)但是域名。 nl存储在public_html / www /文件夹中,因此它还需要重定向到子文件夹(在Web浏览器中不应该显示)。
此时,根目录中的.htaccess文件如下:
# Use HTTPS
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.nl [NC]
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/emailtemplates
RewriteCond %{REQUEST_URI} !^/paymentupdate_ideal
RewriteCond %{REQUEST_URI} !^/autocode
RewriteCond %{REQUEST_URI} !^/nieuwsbrieven
RewriteCond %{REQUEST_URI} !^/bevestig-aanmelding-nieuwsbrief
RewriteCond %{REQUEST_URI} !^/bevestig-afspraak
RewriteCond %{REQUEST_URI} !^/images/personal
RewriteCond %{REQUEST_URI} !^/uploadify
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# Link to subfolder
# RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?www.domain.nl$
RewriteCond %{REQUEST_URI} !^/www/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /www/$1
RewriteCond %{HTTP_HOST} ^(www.)?www.domain.nl$
RewriteRule ^(/)?$ www/index.php?page=home [L]
# Non-www to www
#activate rewrite engine
#RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.)?domain.nl
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
可能有一半的代码甚至没有必要,但我绝对没有任何线索。子文件夹/ www /中的另一个.htaccess文件具有以下文本,我不太了解它(它包含更多内容,但没有任何相关内容):
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.domain.nl/$1/ [L,R=301]
我很抱歉,如果我听起来很愚蠢。我尝试过从互联网上复制的很多东西,但遗憾的是一切都有其后果,导致我们网站的其他问题(链接不再起作用,如)。我认为它一直不起作用的原因是因为它存储在子文件夹中,我不知道如何将所有这些行组合在一起就像它可以工作一样。
有人可以帮我解释一下如何解决这个问题以及此时出现的问题?因为该网站现在没有重定向到www。它只是重定向到https,这在此刻给我一个安全错误(因为SSL存储在www。)。超级感谢提前!
答案 0 :(得分:0)
我的问题是检查顺序错误。首先,我重定向到https://,但是当我没有使用www。时,它没有重定向到https://www或者重定向到https://www.www。我通过重新订购我的规则解决了我的问题,如下所示:
# Non-www to www
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
# Permanent redirect to https://
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/excluded_folder1/
RewriteCond %{REQUEST_URI} !^/excluded_folder2/
RewriteCond %{REQUEST_URI} !^/excluded_folder3/
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# Use subfolder for domain
RewriteCond %{HTTP_HOST} ^(www.)?www.domain.nl$
RewriteCond %{REQUEST_URI} !^/www/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /www/$1
RewriteCond %{HTTP_HOST} ^(www.)?www.domain.nl$
RewriteRule ^(/)?$ www/index.php?page=home [L]