2012-03-09 9 views
6

पर रीडायरेक्ट करें मुझे एक समस्या है जहां मुझे अपनी वेबसाइट पर 4 विशिष्ट पृष्ठों को उनके https सुरक्षित संस्करणों पर रीडायरेक्ट करने की आवश्यकता है।htaccess 4 विशिष्ट पृष्ठों को https

मैं वर्तमान में एक htaccess फ़ाइल जो https://example.com

Options +FollowSymlinks 
RewriteEngine On 
RewriteCond %{HTTP_HOST} ^(.*\.)*example.com$ [NC] 
RewriteCond %{SERVER_PORT} !^443$ 
RewriteRule ^(.*)$ https://example.com/$1 [R] 

करने के लिए दोनों example.com और www.example.com रीडायरेक्ट हो रहा है कि मैं क्या जरूरत है की तरह

Options +FollowSymlinks 
RewriteEngine On 
RewriteCond %{HTTP_HOST} ^(.*\.)*example.com/page1.php$ [NC] 
RewriteCond %{HTTP_HOST} ^(.*\.)*example.com/page2.php$ [NC] 
RewriteCond %{HTTP_HOST} ^(.*\.)*example.com/page3.php$ [NC] 
RewriteCond %{HTTP_HOST} ^(.*\.)*example.com/page4.php$ [NC] 
RewriteCond %{SERVER_PORT} !^443$ 
RewriteRule ^(.*)$ https://example.com/page1.php$1 [R] 
RewriteRule ^(.*)$ https://example.com/page2.php$1 [R] 
RewriteRule ^(.*)$ https://example.com/page3.php$1 [R] 
RewriteRule ^(.*)$ https://example.com/page4.php$1 [R] 

सूचना कुछ है कि मैं से तीसरे RewriteCond लाइन को निकाल दिया है कोड के ऊपर के रूप में मैं नहीं चाहता कि मेरी वेबसाइट पर प्रत्येक पृष्ठ केवल उन पृष्ठों को प्रदर्शित कर रहा हो जो मैं विशेष रूप से बताता हूं।

मैं इस समस्या को कैसे हल कर सकता हूं?

पीएस भी, क्या यह लाइन www.example.com और example.com दोनों को कवर करती है?

RewriteCond %{HTTP_HOST} ^(.*\.)*example.com$ [NC] 

मैं यह सोचते हैं रहा है कि

^(.*\.)* 

कुछ यह साथ क्या है?

उत्तर

11
Options +FollowSymlinks 
RewriteEngine On 
RewriteBase/

#redirect www.mydomain.com to mydomain.com (or any other subdomain) 
RewriteCond %{HTTP_HOST} !^mydomain.com$ [NC] 
RewriteRule ^(.*)$ http://mydomain.com/$1 [L,R=301] 

#force https for certain pages  
RewriteCond %{HTTPS} !=on 
RewriteRule ^(page1\.php|page2\.php|page3\.php|page4\.php)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R] 
+0

बहुत धन्यवाद Gerben, पूरी तरह से काम करता है !!!! –

4

मैंने आपके कोड को संशोधित और साफ़ कर दिया है। आप $ DOCUMENT_ROOT में अपनी .htacces फ़ाइल में इस कोड का उपयोग कर सकते हैं:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

# HTTPS is not already on 
RewriteCond %{HTTPS} !=on 
# Redirect to HTTPS is URI is page1.php OR page2.php OR page3.php OR page4.php 
RewriteRule ^page[1234]\.php$ https://mydomain.com%{REQUEST_URI} [L,R] 
+0

आपके उत्तर anubhava के लिए धन्यवाद, मैं आपके जवाब प्रयास नहीं किया है लेकिन ऐसा लगता है ti काम करेगा लग रहा है। एकमात्र कारण मैंने पहली बार कोशिश नहीं की है कि ऐसा लगता है कि आप पेज 1.php, page2.php आदि के लिए किसी प्रकार की सरणी का उपयोग कर रहे हैं ऐसा करने के तरीके के साथ समस्या यह है कि मैं व्यक्तिगत रूप से विशिष्ट रूप से सम्मिलित नहीं कर सकता पेज नाम, उदाहरण के लिए मेरे पृष्ठों को वास्तव में पेज 1, पेज 2 आदि नहीं कहा गया था, मैं बस सादगी के लिए उनका उपयोग कर रहा था। और दुर्भाग्यवश मुझे इसे बदलने के लिए पुनः लिखने के बारे में पर्याप्त जानकारी नहीं है। वैसे भी आपके उत्तर के लिए धन्यवाद। –

+1

'[1234] 'एक सरणी नहीं थी, लेकिन 1 या 2 या 3 या 4 में से किसी एक को कहने का रेगेक्स तरीका था। मैंने उपयोग किया होगा:' रिवाइट्रूल^(पेज 1 | पेज 2 | पेज 3 | पेज 4) \। Php $ https: //% {HTTP_HOST}% {REQUEST_URI} [एल, आर] 'वैसे भी मुझे लगता है कि आपने सही जवाब स्वीकार कर लिया है क्योंकि @ गर्बेन ने पहले उत्तर दिया और सही जवाब दिया :) – anubhava

संबंधित मुद्दे