Rodolphe के @ और @ गैलेन के उत्तर एक छोटा सा पर विस्तार।
यदि यूआरएल पुनर्लेखन की आपकी आवश्यकताएं सीमित हैं, तो हार्डडोडेड .htaccess
रॉडॉल्फ़ के उदाहरण में वर्णित नियमों के साथ अच्छी तरह से किया जाएगा।
हालांकि, जैसा कि गैलन सुझाव देता है, आपकी ज़रूरतें अज्ञात हो सकती हैं, या आप उन्हें फिर से लिखने के बाद, अपने पुनर्लेखन नियमों को छूने की आवश्यकता के बिना उन पर विस्तार करना चाह सकते हैं।
ऐसा करने का एक आम तरीका है, अपने एप्लिकेशन को एक यूआरएल योजना के आसपास डिजाइन करना है जो www.host.com/controller/action/parameter
है। ऐसे यूआरएल का एक उदाहरण www.host.com/book/view/1
हो सकता है, जिसे आंतरिक रूप से कई तरीकों से संभाला जा सकता है।
1)
आप हर नियंत्रक के लिए अलग स्क्रिप्ट हैं। फिर आप प्रत्येक अनुरोध को $controller.php?action=$action¶m=$param
पर फिर से लिखते हैं, जो गैर-मिलान या गैर-मान्य अनुरोधों को डिफ़ॉल्ट नियंत्रक को पुनर्निर्देशित करता है।
# Serve files and directories as per usual,
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !-d
# If the request uri doesn't end in .php
# and isn't empty, rewrite the url
RewriteCond %{REQUEST_URI} !.php$
RewriteCond %{REQUEST_URI} !^$
# Try matching against a param request first
RewriteRule (.*?)/(.*?)/(.*?) $1.php?action=$2¶m=$3 [L]
# If it didn't match, try to match an action
RewriteRule (.*?)/(.*?) $1.php?action=$2 [L]
# redirect all other requests to index.php,
# your default controller
RewriteRule .* index.php [L]
2)
आप एक एकल प्रवेश बिंदु (या एक सामने नियंत्रक), जो आप हर अनुरोध को रीडायरेक्ट करने, और इस मोर्चे नियंत्रक उचित नियंत्रक से अनुरोध पुनः निर्देशित संभालती है।
# Redirect all requests that isn't a file or
# directory to your front controller
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !-d
RewriteRule .* index.php [L]
जेनेरिक फ़ॉलबैक नियम किसी भी पैरामीट को डिफ़ॉल्ट/फ्रंट नियंत्रक में शामिल नहीं करेंगे। हालांकि, चूंकि यह एक आंतरिक रीडायरेक्ट है, इसलिए आपको यह निर्धारित करने के लिए PHP में REQUEST_URI
तक पहुंच होगी कि आपको क्या करना चाहिए।
ये स्वाभाविक रूप से, आपके एकमात्र विकल्प नहीं हैं। थोड़ी अधिक हलचल के लिए सूप में बस मेरे 2 सेंट।
अस्वीकरण: उपर्युक्त सभी पुनर्लेख नियम (साथ ही साथ बाकी सब कुछ) मेरे सिर के शीर्ष (कुछ बीयर के बाद) से सीधे लिखा गया है और कहीं भी परीक्षण नहीं किया गया है।