2012-02-10 18 views
103

मेरे पास .htaccess फ़ाइल में कुछ भी नहीं कर रहा है। मैं इसका निवारण कैसे करूं?डिबग कैसे करें। Htaccess reewriteRule काम नहीं कर रहा है

  • मैं कैसे सत्यापित कर सकता हूं कि .htaccess फ़ाइल को अपाचे द्वारा भी पढ़ा और पालन किया जा रहा है? क्या मैं एक गूंज लिख सकता हूं "यह काम कर रहा है" संदेश, अगर मैं इसे लिखता हूं, तो वह रेखा कहाँ से गूंज जाएगी?
  • यदि .htaccess फ़ाइल का उपयोग नहीं किया जा रहा है, तो मैं अपाचे को इसका उपयोग कैसे कर सकता हूं?
  • यदि .htaccess का उपयोग किया जा रहा है लेकिन मेरा RewriteRule अभी भी कोई प्रभाव नहीं पड़ रहा है, तो मैं डीबग करने के लिए और क्या कर सकता हूं?

उत्तर

134

अपने .htaccess जैसे कुछ जंक वैल्यू दर्ज करें उदा। foo bar, sakjnaskljdnas किसी भी कीवर्ड को htaccess द्वारा मान्यता प्राप्त नहीं है और अपने यूआरएल पर जाएं। यह काम कर रहा है, तो आप एक

500 आंतरिक सर्वर त्रुटि मिलना चाहिए

आंतरिक सर्वर त्रुटि

सर्वर में आंतरिक त्रुटि या गलत कॉन्फ़िगरेशन आई और आपका अनुरोध पूरा करने में असमर्थ था ....

मैं आपको RewriteEngine on के बाद इसे जल्द ही रखने का सुझाव देता हूं।


चूंकि आप अपनी मशीन पर हैं। मुझे लगता है कि आपके पास अपाचे .conf फ़ाइल तक पहुंच है।

.conf फ़ाइल को खोलने, और एक लाइन के लिए इसी तरह के लिए देखो:

LoadModule rewrite_module modules/mod_rewrite.so 

यह टिप्पणी की है, तो (#), हटाएं और अपाचे पुनः आरंभ करें।


पुनर्लेखन

RewriteEngine On 
RewriteLog "/path/to/rewrite.log" 
RewriteLogLevel 9 

अपने virtualhost में डाल ऊपर 3 लाइनों प्रवेश करने के लिए। httpd पुनरारंभ करें।

RewriteLogLevel 9 स्तर के लिए उच्च मूल्य का उपयोग करके आपके अपाचे सर्वर को नाटकीय रूप से धीमा कर दिया जाएगा! केवल डीबगिंग के लिए 2 से अधिक स्तर पर पुनर्लेखन लॉगफाइल का उपयोग करें! लेवल 9 लगभग हर रिवाइटेलॉग विवरण लॉग करेगा।


अद्यतन

हालात अपाचे 2 में बदल गया है।4:

से Upgrading to 2.4 from 2.2

RewriteLog और RewriteLogLevel निर्देशों हटा दिया गया है। यह कार्यक्षमता अब लॉगलेवल निर्देश का उपयोग करके mod_rewrite मॉड्यूल के लिए लॉगिंग के उचित स्तर को कॉन्फ़िगर करके प्रदान की जाती है। Mod_rewrite लॉगिंग अनुभाग भी देखें।

LogLevel के बारे में अधिक के लिए, का उल्लेख LogLevel Directive

आप इस तरह से

RewriteLog "/path/to/rewrite.log" 

पूरा कर सकते हैं एक फ़ाइल बनाने के लिए अब

LogLevel debug rewrite_module:debug 
+0

ठीक है, तो समस्या यह है कि, मैं .htaccess फ़ाइल में एक पुनर्लेखन जोड़ने की कोशिश कर रहा हूं, और किसी कारण से यह इसका उपयोग नहीं कर रहा है। – macha

+0

@ माचा उपर्युक्त विधि का प्रयास करें। यदि आपको आंतरिक सर्वर त्रुटि मिलती है, तो इसका मतलब है कि mod_rewrite (.htaccess) सक्षम है। क्या आप एक साझा मेजबान हैं? – ThinkingMonkey

+0

नहीं, मैं अपने लोकहोस्ट पर काम कर रहा हूं, क्या आपको पता है कि .htaccess फ़ाइल लोड कब होती है? हालांकि मैं apache इस पहले – macha

0

क्यों नहीं .htaccess फ़ाइल में कुछ जंक डालें और अपाचे को पुनः लोड करने का प्रयास करें। अगर अपाचे शुरू करने में विफल रहता है तो आप इसके काम को जानते हैं। जंक को हटाएं, फिर अपाचे को फिर से लोड करें यदि यह आपके द्वारा कॉन्फ़िगर किए गए बधाई को लोड करता है। Htaccess सही ढंग से।

+6

मुझे नहीं लगता कि अपाचे शुरू करने या अगर वहाँ एक बुरा .htaccess है चलाने के लिए, यह देखते हुए कि यह .htaccess जाँच नहीं करता जब तक वहाँ एक पृष्ठ अनुरोध है असफल हो जायेगी है। – Andrew

5

शायद एक अधिक तार्किक विधि की जाएगी (उदाहरण के लिए test.html), कुछ सामग्री जोड़ें और फिर इसे इंडेक्स पेज के रूप में सेट करने का प्रयास करें:

DirectoryIndex test.html 

अधिकांश भाग के लिए, .htaccess नियम अपाचे विन्यास जहां निर्देशिका/फ़ाइल स्तर

31

पर काम को पार कर जाएगी आम तौर पर .htaccess में कोई बदलाव दिखाई दे प्रभाव होना चाहिए। कोई प्रभाव नहीं है, तो अपने विन्यास अपाचे फ़ाइलों की तरह कुछ की जाँच करें,:

<Directory ..> 
    ... 
    AllowOverride None 
    ... 
</Directory> 

AllowOverride All 

इसमें बदला जाना चाहिए और अगर आप .htaccess फ़ाइलों में निर्देशों को बदलने में सक्षम हो जाएगा।

+0

धन्यवाद। मुझे निर्देशिका पेड़/var/www –

42

'कुछ जंक वैल्यू दर्ज करें' जवाब ने मेरे लिए चाल नहीं की, मेरी साइट दर्ज किए गए जंक के बावजूद लोड हो रही थी।

इसके बजाय मैं .htaccess फाइल के शीर्ष में निम्न पंक्ति कहा:

deny from all 

यह जल्दी से आप जानते हैं कि .htaccess उठाया जा रहा है या नहीं करने देगा। यदि .htaccess का उपयोग किया जा रहा है, तो उस फ़ोल्डर में फ़ाइलें बिल्कुल लोड नहीं होंगी।

+1

के लिए मुख्य apache2.conf फ़ाइल में प्रासंगिक खंड मिला है, यदि आप सत्यापित करते समय कुछ सेकंड के लिए काम करने के लिए कुछ भी नहीं मानते हैं तो यह सबसे आसान परीक्षण है। – Mordred

+0

हाँ - मुझे यह सत्यापित करने के लिए लगभग एक सेकंड लगा कि जिस साइट पर मैं काम कर रहा था वह था। Htaccess फ़ाइलों का उपयोग नहीं कर रहा था। – bonh

+0

धन्यवाद, एक आकर्षण की तरह काम करता है :) मुझे कुछ समय डिबगिंग बचाया! –

3

आप अपाचे बिन निर्देशिका आप उपयोग कर सकते हैं के लिए उपयोग किया है, तो

httpd -M पहले लोड मॉड्यूल की जाँच करने के।

info_module (shared) 
isapi_module (shared) 
log_config_module (shared) 
cache_disk_module (shared) 
mime_module (shared) 
negotiation_module (shared) 
proxy_module (shared) 
proxy_ajp_module (shared) 
rewrite_module (shared) 
setenvif_module (shared) 
socache_shmcb_module (shared) 
ssl_module (shared) 
status_module (shared) 
version_module (shared) 
php5_module (shared) 

बाद Options -Indexes या deny from all की तरह है कि सरल निर्देशों कि .htaccess जमना होगा सही ढंग से काम कर रहे हैं।

0

अपने एचटीएसीएएस रीराइट नियमों का परीक्षण करने के लिए, बस यूआरएल भरें कि आप नियम लागू कर रहे हैं, बड़े इनपुट क्षेत्र पर अपने एचटीएसीएसी की सामग्री रखें और "टेस्ट" बटन दबाएं।

http://htaccess.mwl.be/