2017-09-04 42 views
7

adresindeki sorgu dizesini işleme koyarken, aşağıdaki kurallar http üzerinde çalışıyor ancak https'de bulunmuyor.Apache, https

RewriteCond %{QUERY_STRING} "page=" [NC] 
RewriteRule (.*) /$1? [L] 
RewriteRule ^/path/file.html$ https://www.domain.tld/path/file/ [R=301,L] 

Sorgu_string kısmı neden https'de çalışmıyor?

+0

sahip olduğun bu tek kural Are (sevgiyle) test edilmiştir? – akond

+0

Hayır, 301 yönlendirme bu şekilde ettikten sonra: RewriteRule ^/path/file.html $ https: //www.domain.tld/path/file/ [R = 301, L] – Giuseppe

+0

noktası nedir RewriteRule (. *)/1 $? [L] '? – akond

cevap

0

Sorunuzun yorumlarını temel alarak, bir sayfa parametresi olduğunda sorgu dizesini kaldırmak istediğiniz anlaşılıyor. Bu yeniden yazma kuralı türü, yönlendirme olmadıkça URL'yi kaldırmaz veya değiştirmez. Yeniden yazma kuralına R=301 veya R eklemezseniz, sorgu dizesi kaldırılmaz. Benim sunucuda çalışan Aşağıdakilerden Tüm sorgu dizesi kaldırmak ve benim sunucu% 100 HTTPS geçerli:

RewriteCond %{QUERY_STRING} "page=" [NC] 
RewriteRule (.*) /$1? [R=301,L] 

Yoksa yerine soru işareti QSD bayrağını kullanmak mümkün olabilir:

RewriteCond %{QUERY_STRING} "page=" [NC] 
RewriteRule (.*) /$1 [R=301,L,QSD] 

Yoksa böyle bir şey kullanmak mümkün olabilir: (302 için)

RewriteCond %{QUERY_STRING} "page=" [NC] 
RewriteRule .* /? [R=301,L] 

Ya da sadece R yerine R = 301:

RewriteCond %{QUERY_STRING} "page=" [NC] 
RewriteRule (.*) /$1? [R,L] 

Ancak, hiçbir yönlendirme kullanmadan, sorgu dizesi kaldırılmadı.

0

Gerçekten ihtiyacınız olan tüm http ve https için ayrı vhosts kullanıyorsanız ve settigns hafifçe vardı sürece http ancak https üzerinde çalışmak neden emin değilim http://httpd.apache.org/docs/current/rewrite/flags.htm

RewriteCond %{QUERY_STRING} "page=" [NC] 
RewriteRule (.*) /$1 [L,QSD] 

QSDolduğunu farklı

R bayrağı kullanılmadıkça, Rewrite kurallarının dahili olduğunu unutmayın. R bayrağını kullandığınızda, tarayıcıya tam bir sunucu/istemci gidiş-dönüşüne neden olan farklı bir sayfaya gitmesini söyler. Aksi takdirde, isteği değiştirir ve normal olarak devam eder.

+0

Ne yazık ki, QSD bayrağı ile çalışmadı – Giuseppe

+0

Çalışmayı tanımlayamıyor musunuz? Eğer tarayıcınızda URI’ya bakıyorsanız, R bayrağını kullanmadığınız sürece bahsettiğim gibi değişmeyecektir. Apache'nin (php, python, diger cgi) mansabında ne kullanıyor olursanız sorgu dizgisinin hala mevcut olduğunu mu söylüyorsunuz? – pucky124

0

Ben .htaccess dosyası ile gerçekten güçlü değilim, ben sahne arkasında neler olduğunu açıklayamam, ama bence gelen .htaccess dosyası bu gibi görünmelidir:

RewriteCond %{QUERY_STRING} page= [NC] 
RewriteRule (.*) /$1? [L] 
RewriteRule ^path/file.html$ https://www.domain.tld/path/file/ [R=301,L] 

Bu işi mükemmel

http://example.com?page=1 
https://example.com/?page=1 
http://example.com/path/file.html 
https://example.com/path/file.html 

için here

+0

Ne yazık ki bu işe yaramıyor. – Giuseppe

+0

Ahaha, önerilen cevaplardan hiçbiri işe yaramazsa, muhtemelen başka bir probleminiz var. Apache'yi yeniden yüklemeyi veya daha fazla ayrıntı sağlamayı deneyin. Apache yapılandırma dosyalarında bir yerde küçük bir seçenek veya yönerge olduğunu düşünün ve hiç kimse size yardım edemez. – degr