2011-12-21 15 views
8

का उपयोग कर index.php पर सभी ट्रैफ़िक को रीडायरेक्ट करें। मैं एक यूआरएल शॉर्टनर बनाने की कोशिश कर रहा हूं, और मैं डोमेन के तुरंत बाद किसी भी अक्षर को लेने में सक्षम होना चाहता हूं और उन्हें एक चर यूआरएल के रूप में पास कर सकता हूं। इसलिए उदाहरण केmod_rewrite

के लिए

यहाँ मैं mod_rewrite के लिए है अभी है, लेकिन मैं एक 400 गलत अनुरोध प्राप्त करते रहने के:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*) index.php?url=$1 [L,QSA] 
+1

वास्तविक त्रुटि कारण के लिए 'error.log' में देखें। अन्यथा 'रिवाइटलॉग' – mario

+1

[सरल मॉड रिवाइट] के संभावित डुप्लिकेट को सेट करें (http://stackoverflow.com/questions/7093190/simple-mod-rewrite) – mario

+0

-1: अधिक डिबगिंग आवश्यक है; @ मारियो की टिप्पणी देखें। –

उत्तर

11

साथ ^(.*)$

RewriteRule ^(.*)$ index.php?url=$1 [L,QSA] 

संपादित ^(.*) के बजाय ऐसे: के साथ अपाचे मॉड्यूल के तहत /index.php

RewriteRule ^(.*)$ /index.php?url=$1 [L,QSA] 
+0

मैंने इसे एक शॉट दिया, लेकिन अभी भी 400 खराब अनुरोध प्राप्त करें। अब लॉग के माध्यम से देख रहे हैं, लेकिन मुझे – bswinnerton

+1

@bswinnerton के दौरान कुछ भी मूल्य नहीं दिख रहा है: 'index.php' से पहले'/'जोड़ने का प्रयास करें। मेरा अद्यतन उत्तर देखें। –

+0

ठीक है, तो मैं अब और नहीं त्रुटि मिलती है, लेकिन यह url = asdf जब मैं में टाइप/asdf =/ – bswinnerton

0

RewriteCond का उपयोग कर का उपयोग किए बिना यह कोशिश करो।

+0

अगर मैं रिवाइटकंड पर टिप्पणी करता हूं तो मुझे अभी भी 400 त्रुटि मिलती है। – bswinnerton

+2

उन दो 'रिवाइटकॉन्ड' लाइनें यह सुनिश्चित करने के लिए हैं कि वास्तव में मौजूद फाइलें और फ़ोल्डर्स फिर से लिखे नहीं जाएंगे। उदाहरण के लिए, http: // example.com/images/logo.png' उस छवि को मौजूद होने पर पुनः लिखा नहीं जाएगा। –

+0

@ रॉकेट भविष्य के संदर्भ के लिए जानना अच्छा है। मैं सिर्फ उस जानकारी के साथ काम कर रहा था जो मुझे दिया गया था। – PseudoNinja

-1

चेक index.php के बजाय ऐसे और यह सुनिश्चित करें कि पुनर्लेखन मॉड्यूल सक्षम है। मेरे पास एक समान समस्या थी और इसे पुनः लिखने-मॉड्यूल को सक्षम करके हल किया गया था।

+0

क्या उपयोग यह एक सुपर पुराने प्रश्न ** कि पहले से ही उत्तर दिया गया है जवाब देने के लिए है रहे हैं? –

1

ByTheWay ubuntu

sudo a2enmod rewrite 

पर अपाचे में, आधुनिक पुनर्लेखन सक्षम करने के लिए और फिर पुन: प्रारंभ apache2

sudo /etc/init.d/apache2 restart 

संपादित मत भूलना: यह एक पुराने सवाल है कि मुझे मदद की है, लेकिन मैं घंटे खो दिया एक तरफ मेरी apache2.conf फ़ाइल का परीक्षण और दूसरी तरफ .htaccess फ़ाइल और अभी भी कोई प्रकाश नहीं है।

0

/index.php सभी अनुरोधों को फिर से लिखने के लिए, आप उपयोग कर सकते हैं:

RewriteEngine on 


RewriteCond %{REQUEST_URI} !^/index.php$ 
RewriteRule ^(.+)$ /index.php?url=$1 [NC,L] 

RewriteCondition RewriteCond %{REQUEST_URI} !^/index.php$ महत्वपूर्ण है क्योंकि यह हम करने के लिए पुनः लिख रहे हैं पुनर्लेखन गंतव्य शामिल नहीं और अनंत पाशन त्रुटि रोकता है।