2012-11-22 29 views
7

मैं इनको साथ करने के लिए बेहतर पठनीय यूआरएल यूआरएल को फिर से लिखने और PHP
में $ _GET चर का उपयोग मैं कभी कभी एक उप डोमेन का इस्तेमाल करते हैं तो इसके साथ और बिना काम करना पड़ता है करना चाहते हैं। यूआरएल में आवश्यक चर भी नहीं हैं। मैं यूआरएल

यूआरएल sub.mydomain.com/page/a/1/b/2/c/3 में 3 चर की एक अधिकतम ले sub.mydomain.com/page.php?a=1&b=2&c=3 और यूआरएल sub.mydomain.com/a/1/b/2/c/3 के लिए नेतृत्व चाहिए sub.mydomain.com/index.php?a=1&b=2&c=3 के लिए नेतृत्व चाहिए जहां $_GET['a'] = 1

मैं खोज रहा है और एक बहुत

RewriteEngine on 
RewriteRule ([^/]+)\.domain.com/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)$ $1.domain.com/$2.php?$3=$4&$5=$6&$7=$8 [QSA,NC] 
RewriteRule ([^/]+)\.domain.com/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)$ $1.domain.com/index.php?$2=$3&$4=$5&$6=$7 [QSA,NC] 
RewriteRule ([^/]+)\.domain.com/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)$ $1.domain.com/$2.php?$3=$4&$5=$6 [QSA,NC] 
RewriteRule ([^/]+)\.domain.com/([^/]+)/([^/]+)/([^/]+)/([^/]+)$ $1.domain.com/index.php?$2=$3&$4=$5 [QSA,NC] 
RewriteRule ([^/]+)\.domain.com/([^/]+)/([^/]+)/([^/]+)$ $1.domain.com/$2.php?$3=$4 [QSA,NC] 
RewriteRule ([^/]+)\.domain.com/([^/]+)/([^/]+)$ $1.domain.com/index.php?$2=$3 [QSA,NC] 
RewriteRule ([^/]+)\.domain.com/([^/]+)$ $1.domain.com/$2.php [L,QSA,NC] 
कोशिश कर के बाद इस के साथ आया था

लेकिन मुझे जो मिला वह सर्वर त्रुटि नहीं मिली

मैं इस पर अच्छा नहीं हूं इसलिए शायद मैं कुछ देखूं।
इसके अलावा मैं इसे

पर स्लैश के साथ काम करना चाहूंगा और क्या मुझे रीव्राइटकंड का उपयोग करना चाहिए और/या कुछ विकल्प सेट करना चाहिए?

अग्रिम धन्यवाद।

+3

mod_rewrite में यह विभाजन करने की बजाय, क्यों न केवल एक सरल पकड़ नियम ('रिवाइट्रूल^(। *) $ Index.php? P = $ 1') और फिर यूआरएल पार्स करें, हालांकि आप php में करना चाहते हैं । अधिकांश सीएमएस और वेब ढांचे इस तरह से करते हैं, क्योंकि यह अधिक लचीला, बनाए रखने में आसान है, और अपाचे पर निर्भर नहीं है। –

+0

@LieRyan और उसके बाद अधिकतम 9 चर के लिए, अच्छा विचार है कि अगली बार मुझे एक ही समस्या मिल जाएगी। – Dediqated

+0

मैं मदद नहीं कर सकता लेकिन कह सकता हूं ... क्यू-डांस एफटीडब्ल्यू! –

उत्तर

7

RewriteRule का उपयोग करते समय, आप लाइन में डोमेन नाम शामिल नहीं करते हैं। साथ ही, सुनिश्चित करें कि आप पहले RewriteEngine चालू करें। इस तरह:

RewriteEngine On 
RewriteRule ^([^/]+)/([^/]+)$ index.php?$1=$2 
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)$ index.php?$1=$2&$3=$4 
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)$ index.php?$1=$2&$3=$4&$5=$6 

पहली पंक्ति sub.mydomain.com/page.php?a=1 को sub.mydomain.com/a/1 पुनर्लेखन करेगा, दूसरा पुनर्लेखन sub.mydomain.com/a/1/b/2sub.mydomain.com/page.php?a=1&b=2 करने के लिए, और इतने पर।

+0

हाँ धन्यवाद कि महान काम करता है! मेरा बुरा, रिवाइटइंजिन चालू था। मैं सवाल संपादित कर दूंगा और इसे कोड ब्लॉक में रखूंगा। – Dediqated