सबसे पहले, डेटाबेस में बच निकले तारों को संग्रहीत करने का विचार अजीब लगता है। MySQL मनमाना वर्णों के तारों को संग्रहीत करने में सक्षम है और यहां तक कि सुरक्षित रूप से बाइनरी अनुक्रमों को भी संग्रहीत कर सकता है।
अब वास्तविक शीर्षक से सुंदर URL और पीछे की मैपिंग के बारे में। शीर्षक को URL-अनुकूल स्ट्रिंग में बदलने का विचार और फिर वापस आपकी समस्या को हल करने का सामान्य तरीका नहीं है, क्योंकि इस तरह के रूपांतरण को प्रतिवर्ती बनाना बहुत कठिन है। इस समस्या को हल करने का सामान्य तरीका डेटाबेस में अलग कॉलम होना है जिसमें यूआरएल-अनुकूल होने के लिए संशोधित पुस्तक शीर्षक है। साथ ही इस कॉलम में मूल्यों को अद्वितीय बनाया जाना चाहिए। तालिका इस तरह दिख सकती है:
+-----+-----------------------------+----------------------------+
| BID | book_title | book_title_url |
+-----+-----------------------------+----------------------------+
| 1 | Why Can't I Be You: A Novel | why-can-t-i-be-you-a-novel |
+-----+-----------------------------+----------------------------+
आपको अपनी तालिका को इस कॉलम से अनुक्रमित करना चाहिए और book_title
. के बजाय इसका उपयोग करना चाहिए अपने viewbook.php
. के अंदर SQL क्वेरी में इस तरह की स्क्रिप्ट:
SELECT * FROM books WHERE book_title_url='$booktitle'
जहां $booktitle
$_GET['booktitle']
. के माध्यम से प्राप्त पुस्तक शीर्षक शामिल है और SQL इंजेक्शन को रोकने के लिए ठीक से बच निकले।
तो आपके सुंदर URL http://www.example.com/title/why-can-t-i-be-you-a-novel
जैसे दिखाई देंगे और अपाचे द्वारा उन्हें http://www.example.com/viewbook.php?booktitle=why-can-t-i-be-you-a-novel
जैसी किसी चीज़ में फिर से लिखा जाएगा ।
फिर, यह सामान्य तरीका है कि आमतौर पर सुंदर URL कैसे लागू किए जाते हैं। आशा है कि यह आपके लिए भी काम करेगा।
मौजूदा रिकॉर्ड के लिए आप book_title_url
. को भर सकते हैं कॉलम कुछ इस तरह से:
UPDATE books SET book_title_url=REPLACE(REPLACE(REPLACE(book_title, " ", "-"), ":", "-"), "'", "-");