2011-03-23 8 views
7

मेरे कुछ पुराने प्रश्नों से संबंधित।अपाचे के साथ mod_rewrite का उपयोग कैसे करें -> mod_jk -> tomcat सेटअप?

अब मेरे पास एक सेटअप है जो मुझे काफी पसंद है;

अपाचे httpd पोर्ट 80 को http और https कनेक्शन स्वीकार करने पर सुन रहा है। कई एएमपी बंदरगाहों पर चल रहे कई टोमकैट उदाहरण।

Mod_Jk विभिन्न tomcat उदाहरणों के लिए विभिन्न यूआरएल अनुरोध भेज रहा है;

www.mydomain.com/demo -> tomcat:8101 
www.mydomain.com/test -> tomcat:8102 
www.mydomain.com/  -> tomcat:8100 

यह httpd.conf (या उप फ़ाइलों को शामिल) में निम्न कॉन्फ़िगरेशन के साथ प्राप्त किया गया है;

LoadModule jk_module modules/mod_jk.so 
JkWorkersFile conf/workers.properties 
JkLogFile logs/mod_jk.log 
JkLogLevel info 

NameVirtualHost *:80 

<VirtualHost *:80> 
    JkMount /demo* demoTomcat (workers.properties not shown) 
    JkMount /test* testTomcat 
    JkMount /* rootTomcat 
</VirtualHost> 

और यह सब बहुत अच्छा काम करता है। मेरे पास एसएसएल सेटअप भी है और समान वर्चुअलहोस्ट टैग का उपयोग करके https कनेक्शन के लिए चल रहा है;

<VirtualHost _default_:443> 
    JkMount /demo* demoTomcat 
    JkMount /test* testTomcat 
    JkMount /* rootTomcat 
... SSL Stuff follows .... 

मुझे अब परेशानी हो रही है कि मेरा एसएसएल प्रमाण केवल www.mydomain.com के लिए है और mydomain.com नहीं है।

मुझे अनुवर्ती mod_rewrite कॉल का उपयोग करने की सलाह दी गई है;

Options +FollowSymlinks 
LoadModule rewrite_module modules/mod_rewrite.so 
RewriteEngine On 
RewriteCond %{HTTP_HOST} !^(www\.|$) [NC] 
RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [PT,L] 

मैंने पहले से पहले और httpd.conf फाइल में mod_jk नियमों के बाद इन रखा है। अपाचे पहली बार शिकायत कर रहा था कि रिवाइटइंजिन एक अमान्य कमांड था, लेकिन जब मुझे लोड मॉड्यूल कमांड याद आया तो वह चला गया :) अब अपाचे ठीक ठीक हो जाता है, सर्वर शुरू होता है और अनुरोध स्वीकार करता है और सब कुछ जिस तरह से इसका उपयोग करता है ... लेकिन बस यह, इन mod_rewrite आदेशों का कोई प्रभाव नहीं दिखता है?

मैं ब्राउज़र में http://mydomain.com टाइप करता हूं और मुझे बस सामान्य रूप से मेरी वेबसाइट मिलती है। यूआरएल http://www.mydomain.com में बदलना प्रतीत नहीं होता है और जब मैं सुरक्षित क्षेत्रों तक पहुंचना शुरू करता हूं तो मुझे चेतावनी मिलती है कि mydomain.com सुरक्षित नहीं है और मुझे www.mydomain.com नामक किसी अन्य वेबसाइट से प्रमाण पत्र दे रहा है (यह एक मुद्दा क्यों है और यह ' टी सिर्फ एक ही साइट का एहसास करने के लिए कुछ तर्क का उपयोग करें, मुझे नहीं पता!)।

क्या मैं mod_rewrite नियमों को गलत जगह पर रख रहा हूं? मैंने पढ़ा है कि इसे काम करना चाहिए, फिर से लिखना यूआरएल को www में बदलना चाहिए। और फिर आगे कुछ भी के लिए mod_jk सामान के माध्यम से गुजरना?

उत्तर

2

प्लेस इस स्निपेट अपने अपाचे config में सही पिछले jkmount लाइन के बाद:

<IfModule mod_rewrite.c> 
     RewriteEngine On 
     RewriteCond %{HTTPS} =on 
     RewriteCond %{HTTP_HOST} !^www\.example\.name$ [NC] 
     RewriteRule^https://www.example.name%{REQUEST_URI} [NE,L,R=301] 
    </IfModule> 

क्या इस नियम क्या कर रहा है यदि योजना https है और अपने http मेजबान नहींwww.mydaomain.comतो है 301 http स्थिति के साथ अनुरोध https://example.com/foohttps://www.example.com/foo पर रीडायरेक्ट करें। वर्चुअलहोस्ट टैग के अंदर

+0

? वर्चुअलहोस्ट टैग के अंदर –

+0

हाँ। – anubhava

+0

@ निक फुट: क्या आपके लिए नियम फिर से लिखना था? – anubhava

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