2011-11-24 14 views
5

पर काम नहीं कर रहा है मैंने एक स्वच्छ अपाचे 2 (प्लस PHP & MySQL) सर्वर स्थापित किया है और अपाचे कॉन्फ़िगरेशन में mod_rewrite सक्षम किया है। मैंने कोडइग्निटर विकी में वर्णित यूआरएल से index.php को हटाने के लिए .htaccess फ़ाइल को जोड़ा।कोडइग्निटर के लिए पुनरावृत्ति

RewriteEngine on 
RewriteCond $1 !^(index\.php|images|robots\.txt) 
RewriteRule ^(.*)$ /index.php/$1 [L] 

मैंने इस फ़ाइल को वेबसाइट की रूट में रखा है।

जब मैं url mydomain.local/index.php/welcome तक पहुंचने का प्रयास करता हूं तो मुझे कोडइग्निटर का डिफ़ॉल्ट पृष्ठ मिलता है। लेकिन जब मैं उसी पृष्ठ को mydomain.local/welcome के माध्यम से एक्सेस करने का प्रयास करता हूं तो मुझे 404 पृष्ठ मिलता है।

मैं कैसे जांच सकता हूं कि पूरा पुनर्लेखन नियम काम कर रहा है या नहीं? और यह क्यों काम नहीं कर रहा है?

उत्तर

9

मुझे समाधान मिला। अपाचे कॉन्फ़िगरेशन द्वारा htaccess फ़ाइल को चलाने की अनुमति नहीं थी। तो मुझे निर्देशिका पर AllowOverride ALL पर निर्देशिका को सेट करना पड़ा।

सभी मदद के लिए धन्यवाद! (सीआई userguide http://ellislab.com/codeigniter/user-guide/general/urls.html से)

+3

धन्यवाद ... मेरी समस्या का हल हल हो गया – hforbess

0

आप कॉन्फ़िग फ़ाइल में सूचकांक पृष्ठ से index.php हटाने की जरूरत

/application/config/config.php

$config['index_page'] = ''; 

इस .htaccess सामान कोशिश, यह क्या है मैं 'm का उपयोग कर:

RewriteEngine on 
RewriteCond $1 !^(index\.php|resources|robots\.txt) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L,QSA] 

तुम भी आप अपाचे config में mod_rewite सक्षम करने की आवश्यकता हो सकती है।

+0

इसे फ़ाइल से हटा दिया गया है, लेकिन यह अभी भी काम नहीं करेगा। :( –

+0

काम नहीं कर रहा है :(क्या यह जांचने का कोई तरीका नहीं है कि पूरे। Htaccess फ़ाइल को निष्पादित किया जा रहा है? –

9

यह मानते हुए कि आपके विन्यास (/application/config/config.php) index_page विकलांग है:

$config['index_page'] = ''; 

और अपने अपाचे DocumentRoot है: /SRV/www/

.htaccess फ़ाइल को /एप्लिकेशन/ निर्देशिका के समान स्तर पर निम्न सामग्री के साथ बनाएं:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php?/$1 [L] 
</IfModule> 

आपने ध्यान दिया जाना चाहिए कि DocumentRoot (/) पर अंक RewriteBase। यदि index.php अन्य निर्देशिका में है, तो आपको बदलना चाहिए, इसके अनुसार रीव्राइटबेस बदलना चाहिए।

की तरह एक निर्देशिका संरचना के लिए:

/srv/www/application/ 
/srv/www/system/ 
/srv/www/index.php 
/srv/www/.htaccess 

आपका RewriteBase होना चाहिए: /

की तरह एक निर्देशिका संरचना के लिए:

/srv/www/codeigniter/application/ 
/srv/www/codeigniter/system/ 
/srv/www/codeigniter/index.php 
/srv/www/codeigniter/.htaccess 

आपका RewriteBase होना चाहिए : /कोडिनेटर/

और इसी तरह, आपको तस्वीर मिलती है।

0

uri_protocol कॉन्फ़िगरेशन सेटिंग्स को बदलने का प्रयास करें। साथ ही, कुछ सर्वरों को htaccess फ़ाइल में इस संशोधन की आवश्यकता होती है:

RewriteRule ^(.*)$ /index.php/?$1 [L] 

उस अंतिम स्लैश के बाद प्रश्न चिह्न। उसकी कोशिश करो।

यह भी सुनिश्चित करें कि आपका mod_rewrite चालू है।

+0

Mod_rewrite चालू है और phpinfo() जानकारी के आधार पर लोड किया गया है। लेकिन अतिरिक्त काम नहीं कर रहा है।मैं वास्तव में सोच रहा हूं कि क्या संपूर्ण पुनर्लेखन मोड काम कर रहा है ... –

+0

एचएम, क्या यह किसी भी चीज को फिर से लिख रहा है? कुछ परीक्षण करें, यहां तक ​​कि सीआई के बाहर भी, आप समस्या को स्थानीयकृत करने में सक्षम होंगे। – Shomz

1

डिफ़ॉल्ट .htaccess

RewriteEngine on 
RewriteCond $1 !^(index\.php|images|robots\.txt) 
RewriteRule ^(.*)$ /index.php/$1 [L] 

मैं एक पल के लिए कोड ऊपर भ्रमित किया है, लेकिन मैं इस तरह कोड है:

RewriteEngine on 
RewriteCond $1 !^(index\.php|robots\.txt|.*\.css|.*\.js|.*\.png) 
RewriteRule ^(.*)$ ./index.php/$1 [L] 

पर स्थानीय होस्ट में जोड़ना चाहिए "।/"index.php (तीसरी पंक्ति) के सामने) क्योंकि मेरे मामले में, सीआई निर्देशिका रूट पर नहीं रखी गई है। मुझे लगता है कि "./" का अर्थ है कि यह सापेक्ष पथ होना चाहिए। अतिरिक्त स्थिति ".*\.css|.*\.js|.*\.png" के लिए, इसका मतलब है कि अपाचे को एक्सटेंशन सीएसएस, जेएस और पीएनजी के साथ फ़ाइल पर फिर से लिखना नहीं चाहिए।

0

यदि आप 500 Internal Server Error का सामना कर रहे हैं। देखने के लिए पहली जगह apache error.log फ़ाइल है। मेरे लिए त्रुटि AddOutputFilterByType कमांड से संबंधित थी।

अमान्य आदेश 'AddOutputFilterByType', शायद गलत वर्तनी या सर्वर विन्यास में शामिल नहीं एक मॉड्यूल द्वारा परिभाषित किया।

मेरी कॉन्फ़िगरेशन के लिए, अपाचे कॉन्फ़िगरेशन में दो मॉड्यूल सक्षम नहीं थे, जबकि संबंधित कमांड .htaccess में उपयोग किए जा रहे थे। तो एक बार मैंने filter_module सक्षम किया और deflate_module सबकुछ सामान्य हो गया।