Http से https तक उचित अपाचे पुनर्निर्देशन


3

मैंने अपने सर्वर पर एक नई साइट के लिए एक नया वर्चुअल होस्ट सेट किया है, लेकिन यह मेरी मूल साइट के समान सटीक सेटिंग्स होने के बावजूद अजीब तरह से काम कर रहा है।

मैं चाहता हूं कि सभी अनुरोधों को HTTPS पर पुनर्निर्देशित किया जाए, बस रखा जाए। मेरी मुख्य साइट पर (काम करने वाला) मेरे पास यह निर्दिष्ट है VirtualHost विन्यास, और में .htaccess मेरे पास एक अतिरिक्त नियम है जो लघु URL की अनुमति देने के लिए निर्दिष्ट है। विशेष रूप से, गैर-कार्यशील साइट पर समस्या यह है कि अगर मैं जाने की कोशिश करता हूं example.com/urlरीडायरेक्ट में जाता है https://example.comurl और आवश्यक हटा देता है / URL से।

मैंने नए पर सटीक कॉन्फ़िगरेशन की प्रतिलिपि बनाई है VirtualHost तथा .htaccess कार्य स्थल से फ़ाइल इसलिए मुझे यकीन नहीं है कि यह नए पर काम क्यों नहीं करता है। दोनों साइटों के लिए मेरा DNS रिकॉर्ड सभी को इंगित करने के लिए A रिकॉर्ड का उपयोग करता है, DNS स्तर पर कोई पुनर्निर्देश या कुछ भी नहीं होता है। मैंने डालने की कोशिश की है / के अंत में Redirect नीचे दिए गए कोड में लाइनें, लेकिन समस्या हल नहीं हुई। सर्वर Ubuntu 14.04 है, और Apache संस्करण 2.4.7 है। दोनों साइटें अलग-अलग डोमेन नाम हैं .conf फ़ाइलों का उपयोग किया गया है, लेकिन वे समान सर्वर पर समान आईपी पते के साथ होस्ट किए जाते हैं मैं इस समस्या को कैसे ठीक करुं?

में प्रासंगिक कोड VirtualHost:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    Redirect permanent / https://example.com
</VirtualHost>

और में .htaccess:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule !.*\.html$ %{REQUEST_FILENAME}.html [L]

यदि यह मदद करता है / मामलों में, यह मेरी VirtualHost फ़ाइल में SSL कॉन्फ़िगर है, हालाँकि इसे अन्य सभी निर्देशों के बाहर फ़ाइल की शुरुआत में रखा गया है:

SSLCipherSuite AES128+EECDH:AES128+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
Header always set Strict-Transport-Security "max-age=63072000; includeSubdo$
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff

SSLCompression off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"

और यह विशेष रूप से के लिए विन्यास है VirtualHost साइट के लिए:

<VirtualHost *:443>
    ServerName example.com
    ServerAdmin user@example.com
    DocumentRoot /var/www/example
    ErrorLog ${APACHE_LOG_DIR}/errorexample.log
    Options -Indexes

    SSLEngine on
    SSLCertificateFile /etc/ssl/example/examplecert.crt
    SSLCertificateKeyFile /etc/ssl/example/examplekey.key
    SSLCertificateChainFile /etc/ssl/chain/class1.pem
</VirtualHost>

1
क्या आपने एसएसएल को परिभाषित किया है?
td512

1
शायद अलग अपाचे संस्करण? और क्या आपने रीडायरेक्ट लाइन के अंत में स्लैश डालने की कोशिश की है? ऐशे ही? Redirect permanent / https://example.com/
Marki555

मेरे पास SSL परिभाषित है, मैंने प्रासंगिक कोड ब्लॉक को ओपी में जोड़ा है। मैंने भी डालने की कोशिश की / के अंत में Redirect कमांड, लेकिन इससे समस्या ठीक नहीं हुई।
vaindil

जवाबों:


4

HTTPS पर पुनर्निर्देशित करने के लिए:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

लेकिन आपको ssl के लिए एक वर्चुअल होस्ट की आवश्यकता है:

NameVirtualHost *:443
<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com
    SSLEngine on
    SSLCertificateFile    /etc/apache2/ssl/apache.crt
    SSLCertificateKeyFile /etc/apache2/ssl/apache.key
</VirtualHost>

ध्यान दें: आपको एक SSL प्रमाणपत्र बनाना होगा ... लेकिन वहाँ है महान ट्यूटोरियल इसके लिए!


हुह, इस समस्या को हल करने के लिए प्रतीत होता है। मेरे पास पहले से ही SSL वर्चुअल होस्ट निर्दिष्ट था (मुझे संदेह है कि आप यह उत्तर तब लिख रहे थे जब मैं उसे जोड़ने के लिए मेरा संपादन कर रहा था), लेकिन मैंने अपने Redirect इसके बजाय आपके पहले कोड ब्लॉक की लाइनें और सब कुछ ठीक से काम करता है आपको बहुत - बहुत धन्यवाद!
vaindil

मदद करने के लिए खुश :)
Ricain

क्या आप इस लिंक की जाँच कर सकते हैं: askubuntu.com/questions/876767/...
Nullpointer

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