2012-01-09 11 views
6

मैं समझ नहीं सकता कि इस मामले में मूल निर्देशिका में रीडायरेक्ट कैसे करें: मेरे पास .htaccess फ़ाइल के साथ रूट निर्देशिका है, जहां rewriteEngine चालू है। इस निर्देशिका में मेरे पास एक फ़ाइल rootFile.php है। इसके अलावा, इस निर्देशिका में मेरे पास एक निर्देशिका "फोरम" है, जिसमें एक और .htaccess फ़ाइल है।htaccess रीवाइटरूल मूल निर्देशिका में रीडायरेक्ट कर रहा है?

जब "forum.mySite.com/rootFile.php" के लिए अनुरोध है, तो मुझे इसे "mySite.com/rootFile.php" पर रीडायरेक्ट करने की आवश्यकता है जिसका अर्थ है कि मुझे मूल निर्देशिका में अनुरोध को पुनर्निर्देशित करने की आवश्यकता है।

/forum/.htaccess:

RewriteEngine on 

RewriteBase /forum/ 

RewriteRule ^rootFileName     ../rootFile.php   [L] 
\# or so RewriteRule ^rootFileName   /rootFile.php    [L] 
\# or so RewriteRule ^rootFileName   rootFile.php    [L] 

RewriteRule ^sitemap     /forum/map.php    [L] 

इसके अलावा यह एक करने की कोशिश की:

RewriteEngine on 

RewriteBase /forum/ 

RewriteRule ^sitemap     /forum/map.php    [L] 
... 

मैं करने की कोशिश की

RewriteEngine on 

RewriteBase/

RewriteRule ^rootFileName     ../rootFile.php   [L] 
\# or so RewriteRule ^rootFileName   /rootFile.php    [L] 
\# or so RewriteRule ^rootFileName   rootFile.php    [L] 

RewriteBase /forum/ 

RewriteRule ^sitemap     /forum/map.php    [L] 

और यह हमेशा से/मंच/rootFileName को अनुप्रेषित/फोरम/रूटफाइल, लेकिन कभी नहीं/रूटफाइल।

मेरी गलती कहां है?

उत्तर

0

आप ने लिखा है:

जब अनुरोध है "forum.mySite.com/rootFile.php", मैं की जरूरत के लिए यह रीडायरेक्ट करने के लिए "mySite.com/rootFile.php" जिसका अर्थ मैं की जरूरत है पर मूल निर्देशिका के लिए अनुरोध पुनर्निर्देशित करें।

क्या आपका मतलब:

जब "mySite.com/forum/rootFile.php" करने के लिए अनुरोध नहीं है, मैं की जरूरत "mySite.com/rootFile.php" करने के लिए इसे पुन: निर्देशित जो मैं मूल निर्देशिका के लिए रीडायरेक्ट अनुरोध करने की जरूरत का मतलब है।

... कौन सा बारी में मतलब है:

जब "/forum/rootFile.php" करने के लिए अनुरोध नहीं है, मैं की जरूरत "/rootFile.php" करने के लिए इसे पुन: निर्देशित जो मैं मूल निर्देशिका के लिए रीडायरेक्ट अनुरोध करने की जरूरत का मतलब है।

अपने .htaccess में /forum dir में इस प्रयास करें:

RewriteEngine On 
RewriteRule ^rootFileName(.*) /rootFile.php [QSA,R=301,L] 
7

आप दस्तावेज़-रूट के बाहर करने के लिए फिर से लिखने नहीं कर सकते। यह एक सुरक्षा बात है।

तुम सिर्फ एक rootFile.php कि केवल <?php include('../rootfile.php'); ?>

3

शामिल आप रास्तों कि सुरक्षा कारणों से अपने दस्तावेज़ जड़ से बाहर हैं करने के लिए फिर से लिखने नहीं कर सकते हैं बना सकते हैं। वास्तव में यह टालना चाहिए क्योंकि यह एक अच्छा अभ्यास नहीं है।

वैसे भी, अपने प्रश्न का उत्तर देने के लिए, एक कार्यवाही आपके दस्तावेज़ रूट में एक सिम्लिंक बना सकती है जो लक्ष्य/मूल निर्देशिका को इंगित करती है, लेकिन आपको इसे सीधे पहुंच से सुरक्षित रखना चाहिए।

मुझे एक उदाहरण दें। मान लें कि हमारे दस्तावेज़ जड़ /var/www/project1 है और है कि आप फिर /var/www/project2/target.php

पर पुनर्लेखन के लिए चाहते हैं, आप /var/www/project1 अंदर एक सिमलिंक कि /var/www/project2 (उदाहरण के लिए) p2 नामित के लिए अंक बनाना होगा।

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    RewriteCond %{REQUEST_URI} /hello/world 
    RewriteRule ^(.*)$ p2/target.php [QSA,L] # p2 is the symlink name! 
</IfModule> 
+0

जहां पथ '/ हैलो/जरूरत world' को इंगित करने देता:

यह आपके /var/www/project1/.htaccess फ़ाइल होना चाहिए? – MrIsaacs

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