.Htaccess yönlendirmeleri neden http'de çalışır, ancak https ile çalışmaz?


10

Sitenin http sürümünde harika çalışan basit bir .htaccess dosyası var ama https'ye gittiğimde değil. Neden?

RewriteEngine on
#This is so if the file exists then use the file
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ %{REQUEST_FILENAME} [L]

#These conditions check if a file or folder exists just for reference
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d

#if someone adds ".php" to the slug get rid of it
RewriteRule ^(.*)\.php$ $1  

#don't add the [R] here because we don't want it to redirect
RewriteRule ^(.*)$ index.php?id=$1 [L,QSA]

Yanıtlar:


20

Burada devam etmek için yeterli% 100 bilgi yok, ancak normal varsayılan SSL kurulumunda (Red Hat / CentOS / Fedora örneğin) SSL için VirtualHost kendi kapsayıcısında kuruldu. Mod_rewrite kullanımı, işlem yapabilmesi için belge kökünde en azından "AllowOverride FileInfo" ayarının yapılmasını gerektirir.

Yapılandırmanızı SSL için kontrol edin (varsayılan olarak /etc/httpd/conf.d/ssl.conf), şuna benzediğinden emin olun:

DocumentRoot /var/www/html
<Directory /var/www/html>
  AllowOverride FileInfo
</Directory>

AllowOverride için varsayılan 'Hiçbiri'dir, bu nedenle FileInfo yetenekleri ekleyen diğer tüm ayarlar (' Tümü 'gibi) tamamdır.

http://httpd.apache.org/docs/2.2/mod/core.html#allowoverride


1
Linux'umda /etc/httpd/conf.d/ssl.conf dosyasını göremiyorum, nasıl bulunur?
Ashok KS

1
(1) conf dosyasını aramanız gerekebilir. Örneğin, bazı sistemlerde /etc/apache2/sites-enabled/default-ssl.conf(2) Süper net olmak için, hala sorun yaşıyorsanız, AllowOverride Allyerine deneyin AllowOverride FileInfo. Çalışmaya başladıktan sonra, AllowOveridegüvenliği en üst düzeye çıkarmak için erişimi daha spesifik olarak sınırlamak için Apache belgelerini ayrıntılı olarak okuyabilirsiniz . (3) Ayarların etkili olması için apache'yi yeniden başlatmanız gerektiğini unutmayın.
SilentSteel

4

HTTPS sunucusu için mod_rewrite etkinleştirilmemiş olabilir veya .htaccess kullanılmıyor olabilir mi?

AllowOverideNormal site için kullanım izinlerini kontrol edin ve muhtemelen bir tutarsızlık olan SSL sürümüyle karşılaştırın. Muhtemelen bir kaza olmasa da güvenliği artırmak için tanıtıldı.

mod_rewrite her ne kadar iyi bir hosting sağlayıcısı bu sıralamak yardımcı olmalıdır, ancak temel yanındadır.


1

"apache2 + ubuntu precise üzerinde çalışıyor"

Ben Slim framework kullanırken ve url gerekli index.php kaldırmaya çalışırken ben de benzer bir sorun oluştu . ReWrite http için mükemmel çalıştı ancak https için: url bulunamadığı gösteriyordu, bu da reWrite'ın çalışmadığı anlamına geliyordu.

Bazı hit-n-trial'in ardından bu çözümü buldum:

 cd /etc/apache2/sites-enabled
 sudo vim default-ssl

AllowOverride None değerini All olarak değiştirin . Benzer şekilde sudo vim ssl


0

Benzer bir sorunum vardı, bu benim için işe yaradı.

Httpd.conf dosyasında, her ikisine de sahip olduğunuzdan emin olun:

SunucuAdı domain.com

ServerAlias ​​www.domain.com

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.