2013-03-28 6 views
5

मैं इस अंतिम url प्राप्त करना चाहते हैं जब उपयोगकर्ता 'आदर्श' यूआरएल टाइप करते हैं और जब 'असली' यूआरएल बटन से क्लिक किया जाता है तो दोनों को काम करना चाहिए।इनको सबसे अच्छा अभ्यास

मैं यह domain/services/domain/page.php?s=services या domain/services/city/domain/page.php?s=services&c=city के रूप में भी काम करता हूं।

मैं कोड नहीं पूछ रहा हूं लेकिन इस परिणाम को प्राप्त करने के लिए सबसे अच्छा अभ्यास क्या है।

मैं केवल इनको का उपयोग करना चाहिए और हर मामले के लिए आदेशों लिखते हैं, या मैं कुछ और मुझे क्या करना होगा?

+0

पुन: लिखने के नियमों को क्राफ्ट करते समय मैंने कई वर्षों तक उपयोग किया है, सीएसएस की तरह है, सबसे विशिष्ट (सबसे लंबा) पहले मैच करें। यह सबसे अधिक "सही" नहीं हो सकता है, लेकिन इसकी अच्छी तरह से सेवा की। – Uberfuzzy

उत्तर

0

आप निर्णय तर्क को स्थानांतरित कर सकते हैं, कुछ प्रकार php पक्ष में प्रेषक पर। Htacess में कुछ पैटर्न द्वारा किसी भी अस्तित्व के यूआरएल को कुछ /index.php?url=$bla या /rewrite.php?url=$bla

पर फिर से अपना कोड शामिल करें। इस तरह अधिकांश ढांचे काम करता है।

मुख्य यहाँ समस्या, 100% गैर php कोड की अनदेखी करने के लिए है न के बराबर छवियों, सीएसएसएस, javascripts और जैसे आदि

1

सबसे अच्छा अभ्यास एक प्रश्न पार्सर लिखने के लिए किया जाएगा। उदाहरण के लिए उदाहरण देखें उदाहरण के लिए TinyMVC फ्रेमवर्क, या राउटर, फ्रंट कंट्रोलर, प्रेषक इत्यादि के लिए serach google

यह हासिल करना मुश्किल हो सकता है क्योंकि आपके पास कस्टम पैरामीटर नाम हैं, जैसे 'c' और 'a'।

/domain/services/c=london/n=peter/ 

इस तरह की:

'city' => 'c' 
'name' => 'a' 

आपकी क्वेरी पार्सर भी तरह किसी तरह से स्वत: असाइन कर सकते हैं चर: तो आप कुछ नक्शे ऐसे ही चर नाम करने के लिए मानव पठनीय पैरामीटर नाम आवंटित करेगा लिखने के लिए है यदि आप छवियों, एसएफएफ, सीएसएस, जेएस इत्यादि को छोड़कर .htaccess (आमतौर पर index.php) में एक php फ़ाइल में सभी अनुरोधों को रीमेप करते हैं, तो प्रेषक आपके सभी लिंक के साथ चला सकता है

यह आपका निर्णय है कि आप अपने यूआरएल रूटिंग की योजना कैसे बनायेंगे तर्क। विशेष अक्षर एई यूआरएल एन्कोडिंग के बारे में याद रखें।

सार्वभौमिक यूआरएल पैटर्न जैसे/मॉड्यूल/एक्शन/पैरा 1/पैरा 2/आदि बनाने के लिए "पहला पैरामीटर", "दूसरा पैरामीटर" जैसे संख्यात्मक क्रम में पैरामीटर मान प्राप्त करने पर विचार करें ताकि आप हमेशा संख्या के आधार पर पैरामीटर प्राप्त कर सकें इसके नाम से

आप निश्चित रूप से इनको में आदेश लिख सकते हैं, लेकिन जब नई क्रियाओं को जोड़ने यह समस्याग्रस्त हो जाएगा।

आप उपयोगकर्ता किसी लिंक पर क्लिक भले ही उन 'आदर्श' यूआरएल भरना चाहते हैं, प्रपत्र सबमिट आदि आप न केवल .htaccess बदलने के लिए या रूटर लिख सकते हैं।तुम भी तरह

<a href="<?php buildUrl('modulke' , 'action' , 'param1' , 'param2'); ?>">aaaa</a>

0

कोड में लिंक/कार्यों को बदलने या URL निर्माता लिखने के लिए आप बंद पाठ्यक्रम .htaccess उपयोग करने के लिए है, जाने के लिए रास्ता है।

उसके लिए एक नियम होगा:

RewriteEngine On 

<IfModule mod_rewrite.c> 
     RewriteEngine On 
     RewriteRule ^([^/.]+)/([^/.]+)/([^/.]*)?$ page.php?s=$1&c=$2&a=$3&%{QUERY_STRING} 
    </IfModule> 
1

mod_rewrite सक्षम और httpd.conf के माध्यम से .htaccess और फिर अपने .htaccessDOCUMENT_ROOT तहत निर्देशिका में इस कोड डाल:

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

# redirects /page.php?s=services&c=city&a=name to /services/city/name/ 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+page\.php\?s=([^&]+)&c=([^&]+)&a=([^&]+) [NC] 
RewriteRule^/%1/%2/%3? [R=301,L] 

# forwards /services/city/name/to /page.php?s=services&c=city&a=name 
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ /page.php?s=$1&c=$2&a=$3 [L,QSA] 

पुनश्च: ध्यान दें कि उपर्युक्त नियम केवल /services/city/name/ यूआरआई का ख्याल रखते हैं।

0

http://www.addedbytes.com/articles/for-beginners/url-rewriting-for-beginners/ सभी प्रश्नों के उत्तर आप आरंभ करने के लिए देख रहे है, /services/city/ संभालने के लिए और करने के लिए /services/ आप नियमों के समान सेट जोड़ने की आवश्यकता होगी (सबसे सामान्य करने की दिशा में सबसे विशिष्ट से जाना प्रत्येक यूआरआई के लिए आगे 1 रीडायरेक्ट और 1)।

रूप @Uberfuzzy कहा गया है, सबसे अच्छा अभ्यास सबसे विशिष्ट पहले तो परिभाषित करने के लिए है:

RewriteRule ^domain/services/city domain/page.php?s=services&c=city [NC,L] 
RewriteRule ^domain/services/  domain/page.php?s=services   [NC,L] 

आप आम तौर पर हर मामले के लिए htaccess का उपयोग करें और आदेशों लिखने के लिए की आवश्यकता होगी। अपवाद तब होता है जब आप एक फ्रेमवर्क (ज़ेंड फ्रेमवायर) या अन्य टूल का उपयोग करते हैं जो आपके लिए यूआरएल पुनः लिखने को संभालता है।

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