2016-11-13 195 views
0

所以我有這個網站存儲在public_html/www /。其他一些域存儲在 - 例如public_html/test /中。在public_html我有一個.htaccess文件,其中有很多重定向,它們都適用於/ www /文件夾內的這個網站。在/ www /文件夾裏面我有另外一個.htaccess(我不知道爲什麼,我的同事這樣做了,他沒有提供信息就離開了我)。由於我不知道.htaccess如何正確工作,我不知道該做什麼以及在哪個文件中。.htaccess重定向到子文件夾,非www到www和https

我需要做的是將domain.nl重定向到https://www.domain.nl(應該排除一些文件夾,就像你可以在下面的代碼中看到的那樣 - emailtemplates,paymentupdate,autocode,nieuwsbrieven等)但是domain.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] 

大概一半的代碼,甚至沒有必要的,但我絕對沒有線索。其他.htaccess文件,子文件夾/ WWW /內,有下列文字,我真的不明白(它含有較多的,但沒有相關的):

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ http://www.domain.nl/$1/ [L,R=301] 

對不起,如果我聽起來很蠢。我已經嘗試了很多從互聯網上覆制的東西,但不幸的是,所有事情都有它的前景,這導致了我們網站的其他問題(鏈接不再工作,例如)。我認爲它不能一直工作的原因是因爲它存儲在子文件夾中,我不知道如何將所有這些行結合在一起就像它會工作一樣。

任何人都可以幫我解釋一下如何解決這個問題,這個時候出了什麼問題?因爲該網站現在不會重定向到www。它只是重定向到https,因爲此時存在安全錯誤(因爲SSL存儲在www上)。超級感謝提前!

+0

前兩步你真的應該開始:1.找到你的同事,並要求一個適當的文檔。離開工作是非常不專業的。不,對此類事情沒有任何有效的藉口。 2.去閱讀一些關於apache和'.htacess'風格文件的小教程,以便學習如何使用你想要使用的工具。 – arkascha

+0

謝謝,當然我應該閱讀一些教程(並且我會!),但是這並不能在一天內解決問題。我的同事實際上是我的前同事,他不迴應我嘗試的任何聯繫。所以很不幸,這是不行的。這就是爲什麼我必須自己解決這個問題,而且我(也不是他)都有這方面的知識。對不起。 – Claudia

回答

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] 
相關問題