2009-05-14 24 views
9

क्या नीचे "/ कुछ/subdir" कुछ भी पुनर्लेखन के लिए सबसे अच्छा तरीका है करने के लिए "/ कुछ/subdir/परियोजनाओं" की तरह इस से:.htaccess URL पुनर्लेखन उपनिर्देशिका

http://www.mydomain.com/some/subidr/test/ 

... यह करने के लिए:

http://www.mydomain.com/some/subdir/projects/test/ 

मैंने पाया एक similar question तैनात है, लेकिन समाधान मेरे मामले में काम करने के लिए नहीं मालूम था। मेरे वर्तमान अब तक (जो नहीं लगता है काम करने के लिए) का प्रयास:

Options +FollowSymLinks 
RewriteEngine On 

RewriteCond %{REQUEST_URI} !^/projects/.*$ 
RewriteRule ^(.*)$ /projects/$1 [L] 

संपादित करें: मैं .htaccess फाइल का उल्लेख/कुछ/subdir भीतर बैठे होने के लिए मेरे पास नहीं है के रूप में होता है भूल गया सर्वर की वेब रूट तक पहुंच लिखें।

उत्तर

11

यह समाधान मैं अंत में काम करने के लिए मिल गया है:

RewriteEngine On 

RewriteCond %{REQUEST_URI} !^/some/subdir/projects/.*$ 
RewriteRule ^(.*)$ /some/subdir/projects/$1 [L] 
+5

इस रीडायरेक्ट की तरह दिखता है, फिर से लिखना नहीं – zoltar

6

अपने सर्वर की दस्तावेज़ जड़ में अपनी .htaccess विन्यास फाइल में इस नियम का प्रयास करें:

RewriteEngine on 
RewriteRule !^some/subdir/projects(/|$) some/subdir/projects%{REQUEST_URI} [L] 

आप अपने /some/subdir/ निर्देशिका में इस नियम का उपयोग करना चाहते हैं के रूप में, नियम इस प्रकार बदलने के लिए:

RewriteRule !^projects(/|$) projects%{REQUEST_URI} [L] 

और तुम /some/subdir/projects/foobarके किसी भी अनुरोध रीडायरेक्ट करना चाहते हैंfoobar, पिछले उल्लेख ऊपर इस नियम डाल:

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /some/subdir/projects[/?\s] 
RewriteRule ^some/subdir/projects/?([^/].+)?$ /some/subdir/$1 [L,R=301] 
+0

मैं "/ कुछ/subdir" .htaccess फ़ाइल के अंदर के साथ ऐसा कर सकता है कैसे के बाद से मैं सर्वर के वेब जड़ के लिए लेखन पहुँच नहीं है ? – Wilco

+0

पैटर्न और विकल्प दोनों से 'कुछ/subdir/'निकालें। बाकी ठीक होना चाहिए। – Gumbo

1

मैं इस का प्रयोग करेंगे:

RewriteEngine On 
RewriteRule ^(/some/subdir)/(.*)$ $1/projects/$2 

यह /some/subdir/projects/<anything> को /some/subdir/<anything> रीडायरेक्ट करेगा।

ध्यान दें कि प्रमुख / वास्तव में URL की शुरुआत से मिलान करने के लिए आवश्यक है, जब तक आप RewriteBase / कहीं सेट है।

+0

अग्रणी स्लैश केवल सर्वर या वर्चुअल होस्ट कॉन्फ़िगरेशन में उपयोग किए जाने पर आवश्यक है। एक .htaccess कॉन्फ़िगरेशन में प्रति-निर्देशिका उपसर्ग को परीक्षण करने से पहले हटा दिया गया है और बाद में प्रतिस्थापन में जोड़ा गया है। – Gumbo

+0

मुझे उपफोल्डर से बड़े पैमाने पर सिरदर्द हो रहा था, - इस समस्या पर चारों ओर ज्यादा जानकारी नहीं है, लेकिन अगर आप वास्तव में उपफोल्डर को रीडायरेक्ट करना चाहते हैं तो वह व्यक्ति वास्तव में आया है, निम्नलिखित करें - रिवाइट्रूल /? ([^ /]। +)? $ http://examplen.com/$1 [आर = 301, एल] – GAV

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