.Htaccess रीडायरेक्ट http में क्यों काम करता है लेकिन https के साथ नहीं?


10

मेरे पास एक सरल .htaccess फ़ाइल है जो साइट के http संस्करण पर बहुत अच्छी तरह से काम करती है लेकिन जब मैं https पर जाता हूं तो नहीं। क्यों?

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]

जवाबों:


20

यहां जाने के लिए 100% पर्याप्त जानकारी नहीं है, लेकिन सामान्य रूप से डिफ़ॉल्ट SSL सेटअप (Red Hat / CentOS / Fedora उदा) में SSL के लिए VirtualHost को अपने कंटेनर में सेट किया गया है। Mod_rewrite के उपयोग के लिए एक न्यूनतम "AllowOverride FileInfo" की आवश्यकता होती है ताकि इसे कार्य करने के लिए दस्तावेज़ रूट पर सेट किया जा सके।

SSL (/etc/httpd/conf.d/ssl.conf डिफ़ॉल्ट रूप से) के लिए अपने कॉन्फ़िगर की जाँच करें, सुनिश्चित करें कि यह कुछ ऐसा दिखता है:

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

AllowOverride के लिए डिफ़ॉल्ट 'कोई नहीं' है, इसलिए कोई भी अन्य सेटिंग (जैसे 'ऑल') जो FileInfo क्षमताओं को जोड़ती है वह ठीक है।

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


1
मैं अपने लिनक्स में /etc/httpd/conf.d/ssl.conf नहीं देख सकता, इसे कैसे खोजूं?
अशोक केएस

1
(1) आपको फ़ाइल को खोजने की आवश्यकता हो सकती है .. उदाहरण के लिए, कुछ सिस्टम पर यह /etc/apache2/sites-enabled/default-ssl.conf(2) सुपर-स्पष्ट होने के लिए, यदि आप अभी भी समस्याएँ हैं, तो AllowOverride Allइसके बजाय प्रयास करें AllowOverride FileInfo। एक बार जब आप इसे काम कर लेते हैं, तो आप AllowOverideसुरक्षा को अधिकतम करने के लिए विशेष रूप से पहुंच को सीमित करने के लिए अपाचे डॉक्स को विस्तार से पढ़ सकते हैं । (3) याद रखें कि सेटिंग्स को प्रभावी करने के लिए आपको अपाचे को पुनरारंभ करना होगा।
साइलेंटसेलेल

4

क्या यह संभव हो सकता है कि HT_PS सर्वर के लिए mod_rewrite सक्षम नहीं है, या .htaccess का उपयोग नहीं किया जा रहा है?

AllowOverideनियमित साइट के लिए उपयोग में अनुमतियों की जांच करें और एसएसएल संस्करण के खिलाफ तुलना करें, संभवतः एक विसंगति है। शायद सुरक्षा में सुधार के लिए शुरू किया गया है, अगर दुर्घटना नहीं हुई है।

mod_rewrite हालांकि आवश्यक के बगल में है, इसलिए किसी भी सभ्य होस्टिंग प्रदाता को इसे सुलझाने में मदद करनी चाहिए।


1

"Apache2 + ubuntu सटीक पर काम कर रहा है"

एक समान समस्या मुझे तब हुई जब मैं स्लिम फ्रेमवर्क का उपयोग कर रहा था और url में आवश्यक index.php को हटाने की कोशिश कर रहा था । Http के लिए पूरी तरह से फिर से काम किया, लेकिन https के लिए: यह url नहीं पाया जा रहा था, जिसका अर्थ था कि reWrite काम नहीं कर रहा था।

कुछ हिट-एन-ट्रायल के बाद, मैं इस समाधान के साथ आया:

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

सभी के लिए AllowOverride को बदलें । इसी प्रकार सुडो विम एस.एस.एल.


0

मुझे भी ऐसी ही समस्या थी, मेरे लिए यही काम करता है।

अपने httpd.conf में, सुनिश्चित करें कि आपके पास दोनों हैं:

ServerName domain.com

ServerAlias ​​www.domain.com

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.