2012-10-25 17 views
15

मैंने सफलतापूर्वक द्रव्यमान को एक वर्डप्रेस साइट माइग्रेट कर दिया। दुर्भाग्य से वर्डप्रेस में, सामग्री यूआरएल कुछ www.example.org/?p=123 जैसा था। मेरा डोमेन अभी भी वही है, लेकिन मैं htaccess के माध्यम से रीडायरेक्ट करना चाहता हूं क्योंकि ड्रूपल यूआरएल को www.example.org/?p=123 होने की अनुमति नहीं देगा। दूसरे शब्दों में, सामग्री में वही यूआरएल नहीं है जैसा उसने वर्डप्रेस में किया था। उदाहरण के लिए, नई Drupal यूआरएल की तरह www.example.org/content/MyNewPageक्वेरी स्ट्रिंग के आधार पर URL को रीडायरेक्ट कैसे करें?

कुछ मैं अपने .htaccess फाइल में इस की कोशिश की होगी और यह काम नहीं करता

Redirect 301 /\?p=375 http://www.example.org/content/MyNewPage 

तो मैं नीचे करने की कोशिश की है, लेकिन यह या तो काम नहीं करता।

Redirect 301 /\?p\=375 http://www.example.org/content/MyNewPage 

बस एक परीक्षण के रूप में, मैंने नीचे की कोशिश की और यह काम किया।

Redirect 301 http://www.example.org http://www.google.com 

मुझे यकीन है कि मेरी रीडायरेक्ट नियम मेरी .htaccess में सूची के शीर्ष पर है, इसलिए यह पहली मूल्यांकन किया जाएगा बनाया है। मैं यह कैसे तय करुं?

उत्तर

29

न तो रीडायरेक्ट और न ही रीडायरेक्टमैच आपको रीडायरेक्ट स्रोत के लिए क्वेरी स्ट्रिंग निर्दिष्ट करने की अनुमति देता है। [Source]

आप क्वेरी स्ट्रिंग के आधार पर रीडायरेक्ट के लिए आधुनिक-पुनर्लेखन का उपयोग करना होगा:

RewriteCond %{QUERY_STRING} ^p=375$ 
RewriteRule (.*) http://www.example.org/content/MyNewPage? [R=301,L] 
+0

दुर्भाग्य से मुझे 404 पृष्ठ पर रीडायरेक्ट नहीं किया गया है, और मेरा यूआरएल अभी भी http://www.example.org/?p=375 दिखा रहा है। मैं पुष्टि कर सकता हूं कि "सामग्री/MyNewPage" मौजूद है और काम करता है। मैं यह भी पुष्टि कर सकता हूं कि मेरे रिवाइट नियम काम कर रहे हैं क्योंकि वे ड्रूपल में ठीक काम करते हैं। – user785179

+0

अपने ब्राउज़र के कैश को साफ़ करें और पुनः प्रयास करें, ब्राउज़र कैश '301 स्थायी रीडायरेक्ट – undone

+0

अच्छा सुझाव है, लेकिन अब फ़ायरफ़ॉक्स का कहना है कि यह अंतहीन पाश के रूप में रीडायरेक्ट कर रहा है। "फ़ायरफ़ॉक्स ने पाया है कि सर्वर इस पते के अनुरोध को इस तरह से पुनर्निर्देशित कर रहा है जो कभी पूरा नहीं होगा।" यूआरएल http://www.example.org/content/MyNewPage?p=375 – user785179

1

आप अपने htaccess में ModRewrite का उपयोग पर विचार कर सकते

<IfModule mod_rewrite.c> 

RewriteEngine On 

RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteCond %{QUERY_STRING}  ^p=345$ [NC] 
RewriteRule index.php content/MyNewPage [NC,L,R=301] 

</IfModule> 

और तुम भी पारित करने के लिए चाहते हो सकता है पुराने यूआरएल को नए यूआरएल को सम्मिलित किया गया है (या शायद क्यूएस द्वारा?):

<IfModule mod_rewrite.c> 

RewriteEngine On 

RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteCond %{QUERY_STRING}  ^p=(.*)$ [NC] 
RewriteRule index.php content/MyNewPage-%1 [NC,L,R=301] 

</IfModule> 
+0

मैंने आपकी विधि की कोशिश की लेकिन मुझे 404 त्रुटि पृष्ठ पर ले जाया गया। – user785179

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