2014-02-15 33 views
1

我嘗試了一些在某些問題上找到的代碼提示 - 答案但我沒有任何運氣。用https訪問某些帶有htaccess的URL

所以我作爲我的問題。

我想重定向一些URL的形式https到http。

我的htaccess代碼的一部分是follwing。但它不起作用,URL仍然保留在SSL上。 主要的SSL直接來自服務器。

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] 
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 
RewriteCond %{HTTPS} on 
RewriteCond %{REQUEST_URI} ^/index.php?lang=de&Itemid=231 
RewriteCond %{REQUEST_URI} ^/index.php?lang=en&Itemid=337 
RewriteCond %{REQUEST_URI} ^/index.php?lang=fr&Itemid=338 
RewriteCond %{REQUEST_URI} ^/index.php?option=com_content&view=category&layout=blog&id=58&Itemid=231&lang=de 
RewriteCond %{REQUEST_URI} ^/index.php?option=com_content&view=category&layout=blog&id=58&Itemid=337&lang=en 
RewriteCond %{REQUEST_URI} ^/index.php?option=com_content&view=category&layout=blog&id=58&Itemid=338&lang=fr 
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

感謝您的幫助提前。


我試圖用Sumurai8的代碼片段解決我的問題。但我沒有運氣。它仍然保持在SSL上。那可能是因爲SSL來自Apache-Server Confixx配置?

我也檢查了緩存。此外,我無法通過簡化代碼來使用您的代碼。它說,它無法完成請求 - >循環。

查詢字符串不包括在重寫規則的第一個參數,也可以與%{REQUEST_URI}匹配

我是否需要添加新規則相匹配的條件是什麼?

像:

RewriteRule .* http://%{HTTP_HOST}%{QUERY_STRING} [R=301,L] 

更新:

的htaccess文件位於HTML文件夾中。所以不在子文件夾中。

此刻孔代碼如下:

Action php /cgi-php53/php 
AddHandler php53 .php 

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] 
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 
RewriteCond %{HTTPS} on 
RewriteCond %{QUERY_STRING} ^/index.php?lang=de&Itemid=231 [OR] 
RewriteCond %{QUERY_STRING} ^/index.php?lang=en&Itemid=337 [OR] 
RewriteCond %{QUERY_STRING} ^/index.php?lang=fr&Itemid=338 [OR] 
RewriteCond %{QUERY_STRING} ^/index.php?option=com_content&view=category&layout=blog&id=58&Itemid=231&lang=de [OR] 
RewriteCond %{QUERY_STRING} ^/index.php?option=com_content&view=category&layout=blog&id=58&Itemid=337&lang=en [OR] 
RewriteCond %{QUERY_STRING} ^/index.php?option=com_content&view=category&layout=blog&id=58&Itemid=338&lang=fr 
RewriteRule .* http://%{HTTP_HOST}%{QUERY_STRING} [R=301,L] 

不活動的條件和規則

#RewriteCond %{HTTP_HOST} ^chimia.ch 
#RewriteRule (.*) http://scg.ch/$1 [R=301,L] 

#RewriteCond %{HTTP_HOST} ^myow.ch 
#RewriteRule (.*) http://scg.ch/$1 [R=301,L] 

#RewriteCond %{HTTP_HOST} ^polycoll.ch 
#RewriteRule (.*) http://scg.ch/$1 [R=301,L] 

#RewriteCond %{HTTP_HOST} ^swiss-chem-soc.ch 
#RewriteRule (.*) http://scg.ch/$1 [R=301,L] 

#RewriteCond %{HTTP_HOST} ^youngchemists.ch 
#RewriteRule (.*) http://scg.ch/$1 [R=301,L] 

#RewriteCond %{HTTP_HOST} ^www.chimia.ch 
#RewriteRule (.*) http://scg.ch/$1 [R=301,L] 

#RewriteCond %{HTTP_HOST} ^www.myow.ch 
#RewriteRule (.*) http://scg.ch/$1 [R=301,L] 

#RewriteCond %{HTTP_HOST} ^www.polycoll.ch 
#RewriteRule (.*) http://scg.ch/$1 [R=301,L] 

,然後一些重定向,如:

Redirect /cours/2014-aa1f https://scg.ch/index.php?option=com_superevents&redirect=category&catid=74&Itemid=525&task=group&view=details&id=2674&lang=en 

Redirect /cours/2014-aa2f https://scg.ch/index.php?option=com_superevents&redirect=category&catid=74&Itemid=525&task=group&view=details&id=2678&lang=en 

Redirect /cours/2014-aa3f https://scg.ch/index.php?option=com_superevents&redirect=category&catid=74&Itemid=525&task=group&view=details&id=2689&lang=en 

多了很多重定向

Redirect /roempp https://scg.ch/index.php?option=com_content&view=article&id=926:roempp-online-special-offer-for-scs-members&catid=9:scg-news&Itemid=112&lang=en 

Redirect /login https://scg.ch/index.php?option=com_comprofiler&task=login&lang=en 


ErrorDocument 404/

感謝您提前提供更多幫助。問候

回答

0

你的規則看起來很好,除了一件事。查詢字符串不包含在RewriteRule的第一個參數中,或者可以與%{REQUEST_URI}匹配。此外,正則表達式中的?字符表示「匹配前一個字符0或1次」,而.字符表示「匹配任何字符」。您需要將其與%{QUERY_STRING}匹配,或將其與%{THE_REQUEST}匹配。

可以通過將公共部分(index.php)移動到RewriteRule的第一個參數來簡化它,在描述每個可能的查詢字符串的所有條件之前具有所需的HTTPS。通過用OR標誌來鏈接這些條件,只要其中的一個必須是真的,只要其中一個是真的。

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] 
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 

RewriteCond %{HTTPS} on 
RewriteCond %{QUERY_STRING} ^lang=de&Itemid=231$ [OR] 
RewriteCond %{QUERY_STRING} ^lang=en&Itemid=337$ [OR] 
RewriteCond %{QUERY_STRING} ^lang=fr&Itemid=338$ [OR] 
RewriteCond %{QUERY_STRING} ^option=com_content&view=category&layout=blog&id=58&Itemid=231&lang=de$ [OR] 
RewriteCond %{QUERY_STRING} ^option=com_content&view=category&layout=blog&id=58&Itemid=337&lang=en$ [OR] 
RewriteCond %{QUERY_STRING} ^option=com_content&view=category&layout=blog&id=58&Itemid=338&lang=fr$ 
RewriteRule ^index\.php$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
+0

Sumurai8嗨, 感謝您的迴應和幫助至今。但我仍然對這個問題持懷疑態度。也許你可以在我上面的答案中找到這個錯誤。 – konzeptplus

+0

嗨,StackOverflow不是一個論壇。因此,除非您真的解決了您的問題中列出的問題,否則您不應在回答中回覆您的問題。您可以使用新信息更好地編輯您的問題,並通過像您這樣做的評論通知我。 – Sumurai8

+0

@konzeptplus你的.htaccess位於哪裏,它是否包含更多的規則?它包含什麼規則呢? – Sumurai8

相關問題