Codeigniter की राह में "index.php" कैसे निकालें


जवाबों:


90

यदि आप अपाचे को अपनी रूट वेब निर्देशिका में एक .htaccess फ़ाइल का उपयोग कर रहे हैं, जिसमें निम्नलिखित हैं:

RewriteEngine on
RewriteCond $1 !^(index\.php|[Javascript / CSS / Image root Folder name(s)]|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

एक और अच्छा संस्करण यहाँ स्थित है:

http://snipplr.com/view/5966/codeigniter-htaccess/


2
लिंक के लिए +1! हालांकि थोड़ा बहुत ट्विस्ट करना पड़ा। इसे इसके साथ मिला -> RewriteCond% {REQUEST_FILENAME}! -f RewriteCond% {REQUEST_FILENAME}! -d RewriteRule ^ (। *) $ index
.php

किसी कारण से, मुझे रिवर्टकॉन्ड की शुरुआत में एक स्लैश जोड़ना पड़ा। RewriteCond $1 !^\/(index\.php|assets|robots\.txt)
हेनरी

किसी कारण से, यदि आपके पास URL में index.php है, तो यह वास्तव में हटाया नहीं गया है, यह वहां रहता है और काम करता रहता है।
CMCDragonkai 8

1
मैंने सभी संभावित संयोजनों का उपयोग किया और यह अभी भी मेरे लिए काम नहीं कर रहा है !!!!! तुमने इससे काम कैसे लिया??
रोशदी

अपाचे स्थापित करने के लिए .htaccess फ़ाइलों की जाँच करने के लिए कॉन्फ़िगर करने की आवश्यकता है - सुनिश्चित करें कि मामला है।
सीन विएरा

60

Index.php को हटाने के साथ मेरे कुछ बड़े मुद्दे थे। एक सामान्य नियम के रूप में .htaccess को कई सर्वरों पर परीक्षण किया गया है और आम तौर पर काम करता है:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]  

<Files "index.php">
AcceptPathInfo On
</Files>  

यदि आपके पास इसके साथ कोई भाग्य नहीं है, तो अगला कदम आपकी कॉन्फ़िगरेशन फ़ाइल को समायोजित करना है। कुछ अन्य URI प्रोटोकॉल जैसे प्रयास करें

| 'AUTO'            Default - auto detects
| 'PATH_INFO'       Uses the PATH_INFO
| 'QUERY_STRING'    Uses the QUERY_STRING
| 'REQUEST_URI'     Uses the REQUEST_URI
| 'ORIG_PATH_INFO'  Uses the ORIG_PATH_INFO

   $config['uri_protocol']  = 'ORIG_PATH_INFO';

यदि आपका अभी भी कोई भाग्य नहीं है, तो अपने सबफ़ोल्डर को शामिल करने के लिए पुनर्लेखन नियम को बदलने का प्रयास करें। यह अक्सर एक समस्या है यदि आपका एक देव सर्वर पर एक अस्थायी यूआरएल का उपयोग कर रहा है:

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

बस इन विकल्पों के साथ खेलते हैं, एक को काम करना चाहिए। यह भी सुनिश्चित करें कि आपकी इंडेक्स फ़ाइल निम्न पर सेट है:

$config['index_page'] = '';

सौभाग्य!


मुझे लगा कि यहां आपका पहला कोड मेरे लिए समाधान था, लेकिन वास्तव में यह डोमेन / * जैसे किसी भी यूआरएल को डोमेन / इंडेक्स में भेज रहा है। अगर यह डोमेन / स्वागतकर्ता को स्वागतकर्ता नियंत्रक के पास नहीं भेज रहा है। एक सेकंड के लिए उत्साहित था। अन्य सुझावों की कोशिश कर रहा है।
jsky

31

Index.php फ़ाइल के साथ एप्लिकेशन रूट निर्देशिका में .htaccess फ़ाइल रखें। (जांचें कि क्या htaccess एक्सटेंशन सही है, Bz htaccess.txt ने मेरे लिए काम नहीं किया।)

और .htaccess फ़ाइल में निम्नलिखित नियम जोड़ें,

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]  

फिर अपने आवेदन / विन्यास / config.php फ़ाइल में निम्न पंक्ति खोजें

$config['index_page'] = 'index.php';

नीचे के रूप में चर सेट करें।

$config['index_page'] = '';

यही है, इसने मेरे लिए काम किया।

यदि यह इन पैरामीटर्स ('AUTO', 'PATH_INFO', 'QUERY_STRING', 'REQUEST_URI', और 'ORIG_PATH_INFO') को एक-एक करके बदलने की कोशिश नहीं करता है

$config['uri_protocol'] = 'AUTO';

3
धन्यवाद, मैं लंबे समय से इस के लिए असफल रहा है, लेकिन क्यों उर मक्खन की तरह काम किया: D
अहमद Samy

1
धन्यवाद MDeSilva। यह पोस्ट मेरा समय बचाएगी।
sanji

1
धन्यवाद। यह कार्य करता है। BTW, मुझे config.php बदलने की जरूरत नहीं है।
स्टोनी

1
धन्यवाद, इसने मेरी मदद की, मैंने
WAT के

21

में एक नज़र system\application\config\config.phpफ़ाइल, वहाँ नाम के एक चर रहा हैindex_page

इसे ऐसा दिखना चाहिए

$config['index_page'] = "index.php";

इसे बदलो

$config['index_page'] = "";

फिर जैसा कि आपको बताया गया है कि आपको .htaccessफ़ाइल में एक पुनर्लेखन नियम जोड़ना होगा

नोट: CodeIgniter v2 में यह फाइल सिस्टम फोल्डर से बाहर ले जाया गया था application\config\config.php


9

उपरोक्त सभी तरीकों मेरे लिए विफल रही है और उसके बाद मैंने पाया कि मैं नहीं बदल रहा था AllowOverride कोई नहीं करने के लिए AllowOverride सभी पर अपने आभासी मेजबान फ़ाइल में / etc / apache2 / साइटों से उपलब्ध / डिफ़ॉल्ट

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
            Options FollowSymLinks
            AllowOverride All    <---- replace None with All
    </Directory>
    <Directory /var/www >
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All   <---  replace None with All
            Order allow,deny
            allow from all
    </Directory>

     ...


बहुत बहुत धन्यवाद, मुझे लगता है कि AllowOverride भी कोई नहीं है, अब यह काम करता है!
विली

ब्लॉग अब चला गया है, और मैं इसे पढ़ना बहुत पसंद करूंगा। इनमें से कोई भी समाधान मेरे लिए काम नहीं कर रहा है ...
केविन बील

भयानक, मेरा दिन बचाया।
JChow

6
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /codeigniter/index.php/$0 [PT,L]

रीटराइट नियम को बदलने के बाद। * index.php / $ 0 [PT, L] प्रोजेक्ट फ़ोल्डर नाम "ignigniter "के साथ। यह मेरे लिए काम कर रहा है। आपके समर्थन के लिए धन्यवाद दोस्तों।


6

चरण 1 => अपनी .htaccess फ़ाइल को रूट फ़ोल्डर में रखें जहाँ एप्लिकेशन और सिस्टम फ़ोल्डर मौजूद हैं।

चरण 2 => यदि आपका वेब पथ उप-फ़ोल्डर का उपयोग कर रहा है जैसे - yourdomain.com/project/ - तो htaccess फ़ाइल में निम्न कोड का उपयोग करें

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

यदि आपका वेब पथ रूट-फ़ोल्डर का उपयोग कर रहा है जैसे - yourdomain.com - तो htaccess फ़ाइल में निम्न कोड का उपयोग करें

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

उपरोक्त उदाहरणों में से पहली का उपयोग करने की कोशिश मेरी जड़ पर ही काम करती है, लेकिन फॉर्म लोड आदि पर नहीं। फिर भी मैं सूचकांक का उपयोग करने की कोशिश करूंगा। उन यूआरएल में मैं चारों ओर खेलूंगा और वापस आऊंगा अगर मैं इसे बाहर निकाल सकता हूं
सैम

धन्यवाद @ विनोद.मैं इस समस्या से पागल हो रहा था। मैं इतने लंबे समय से नेट पर खोज रहा था, विभिन्न समाधानों की कोशिश की, लेकिन उन्होंने तब तक काम नहीं किया जब तक कि मैं आपके समाधान में नहीं आया। अब तक मेरी सीआई परियोजना काम कर रही है और इसने मुझे नई आशा दी है CI के साथ आगे बढ़ने के लिए धन्यवाद। :)
गोमेश मुंडा

5

बस मैंने सोचा कि मैं जोड़ सकता हूँ

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

.htaccess होगा और निम्नलिखित तरीके से अपने एप्लिकेशन / config.php वैरिएबल को संपादित करना सुनिश्चित करें:

बदलने के

$config['uri_protocol'] = AUTO 

साथ में

$config['uri_protocol'] = REQUEST_URI

5
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L] 

यह निश्चित रूप से काम करना चाहिए .. एक कोशिश है


4

सुनिश्चित करें कि आपने सक्षम किया है mod_rewrite(मैं नहीं था)।
सक्षम करने के लिए:

sudo a2enmod rewrite  

इसके अलावा, की जगह AllowOverride NoneसेAllowOverride All

sudo gedit /etc/apache2/sites-available/default  

अंत में ...

sudo /etc/init.d/apache2 restart  

मेरा व्हाट्सएप है

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

मुझे सक्षम करने के लिए एक और मॉड्यूल की आवश्यकता थी actions: stackoverflow.com/questions/14419757/…
जसदीप खालसा

4

सही समाधान [लोकलहोस्ट के साथ-साथ वास्तविक डोमेन पर परीक्षण किया गया]

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L] 

3

यह मेरी सीआई परियोजनाओं में से एक के लिए एक .htaccess है:

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

अंतिम पंक्ति आपको वह देनी चाहिए जो आपको आवश्यक है, हालांकि आपके फ़ोल्डर की संरचना कैसे सेट की जाती है, इसके आधार पर आपको 'प्रोजेक्ट प्रोजेक्टर' की आवश्यकता हो सकती है या नहीं भी। सौभाग्य!



3

एक .htaccess फ़ाइल के रूप में, कोहना फ्रेमवर्क द्वारा दिए गए एक का उपयोग करने के लिए एक अच्छा विकल्प है :

# Turn on URL rewriting
RewriteEngine On

# Installation directory
RewriteBase /

# Protect hidden files from being viewed
<Files .*>
    Order Deny,Allow
    Deny From All
</Files>

# Protect application and system files from being viewed
RewriteRule ^(?:application|system)\b.* index.php/$0 [L]

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]

यह एक अच्छी तरह से सोचा गया है। सिर्फ काम करता है।


3

Codeigniter के लिए url पथ में index.php को हल करने के दो तरीके हैं

1: config / config.php में परिवर्तन कोड:

$config['index_page'] = 'index.php';

सेवा

$config['index_page'] = '';

2: यदि बनाया नहीं है तो रूट पथ में .htacess बनाएँ: निम्नलिखित कोड की प्रतिलिपि बनाएँ: -

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

इसे सहेजें और फिर अपने अपाचे कॉन्फ़िगरेशन में फिर से जांचें re_ite_module या mod_rewrite सक्षम है। यदि नहीं तो कृपया सक्षम करें। (बेस्ट अनडच)!


यह CodeIgniter डॉक्स से सही और सीधा है। मैं भी इस विधि का उपयोग कर रहा हूं।
देवलद एल्स

2

मैं कई अलग होस्टिंग पर apache2 पर यह परीक्षण किया है और यह बहुत अच्छा काम करता है।

इस htaccess का उपयोग करें

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]

सुनिश्चित करें कि आपके पास enabled mod_rewirteएक हैphpinfo();

फिर इसे config / config.php में करें:

$config['index_url']    = '';
|
| 'AUTO'            Default - auto detects
| 'PATH_INFO'       Uses the PATH_INFO
| 'QUERY_STRING'    Uses the QUERY_STRING
| 'REQUEST_URI'     Uses the REQUEST_URI
| 'ORIG_PATH_INFO'  Uses the ORIG_PATH_INFO
|
*/
$config['uri_protocol'] = 'AUTO';

यदि यह अभी तक काम नहीं करता है, तो 40/54 लाइन पर $config['uri_protocol']='AUTO'सूचीबद्ध application/config/config.phpफ़ाइल के अंदर से किसी एक को बदलने का प्रयास करें :

कभी-कभी मैंने इस्तेमाल किया: REQUEST_URIबजाय AUTOया "QUERY_STRING"गोएड्डी होस्ट के


2

एक नज़र डालें जो \application\config\config.phpफ़ाइल, वहाँ नाम के एक चर रहा हैindex_page

इसे ऐसा दिखना चाहिए

$config['index_page'] = "index.php";

इसे बदलो

$config['index_page'] = "";

फिर जैसा कि आपको बताया गया है कि आपको .htaccessइस तरह फाइल में एक पुनर्लेखन नियम जोड़ना होगा:

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

यह मेरे लिए काम करता है, आशा है कि आप भी।


2

यदि आप linux पर हैं और apache2 सर्वर का उपयोग कर रहे हैं, तो हमें .htaccess फ़ाइल में परिवर्तन के साथ-साथ apache2.conf फ़ाइल को भी ओवरराइड करना पड़ सकता है। Apet2 कॉन्फ़िगरेशन फ़ाइल /etc/apache2/apache2.conf पर खोजें ।

खोज निर्देशिका / var / www / Change AllowOverride कोई नहीं -> AllowOverride सभी

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory

1

अपने रूट वेब निर्देशिका में .htaccess फ़ाइल रखें

जो कुछ भी आप कर रहे हैं - यदि ऊपर से मुलाकात नहीं की जाती है - तो यह काम नहीं करेगा। आमतौर पर सिस्टम फ़ोल्डर में इसकी जड़ में होना चाहिए। चीयर्स!


2
कुछ घंटे बिताने के बाद, मैंने इसे पढ़ा और अपनी गलती पाई।
mohsin.mr

मैंने इस "छोटी" चाल के कारण कम से कम एक घंटा बिताया। डिफ़ॉल्ट रूप से, .htaccess फ़ाइलें applicationरूट के बजाय निर्देशिका में आती हैं ।
vadim

1

मैं कई समाधानों की कोशिश कर चुका हूं, लेकिन मैं इसके साथ आया हूं:

DirectoryIndex index.php
RewriteEngine on

RewriteCond $1 !^(index\.php|(.*)\.swf|forums|images|css|downloads|jquery|js|robots  \.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php?$1 [L,QSA]

यह iwill आवश्यकतानुसार url से index.php को हटा देता है।


1

मैं .htaccessफ़ाइल में इन पंक्तियों का उपयोग करता हूं ; जो मैं रूट फ़ोल्डर में रखता हूं

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

तब मैं http://example.com/controller/function/parameter एक्सेस कर सकता हूं

http://example.com/index.php/controller/function/parameter के बजाय


0

यह आपको इस कोड को .htacess फ़ाइल में एप्लिकेशन फ़ोल्डर में पेस्ट करने में मदद करेगा

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]  

<Files "index.php">
AcceptPathInfo On
</Files>
<IfModule mod_php5.c>
  php_value short_open_tag 1
</IfModule>

0

इसने मुझे पूरा जादू किया:

RewriteEngine on
RewriteBase /
# Hide the application and system directories by redirecting the request to index.php
RewriteRule ^(application|system|\.svn) index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,L]

आशा करता हूँ की ये काम करेगा!


0

हाय यह एक मुझे काम किया

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /folder/index.php?/$1 [L]

साथ में यह भी

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /folder/index.php?/$1 [L]

यदि फ़ोल्डर इस उप-कोड का नाम है, तो यह कोडिग्नेटर एप्लिकेशन को उप डोमेन के रूप में होस्ट किया जाता है जैसे डोमेन नाम / फ़ोल्डर / इंडेक्स। एफपीपी।

उम्मीद है वह आप के काम आएगा। धन्यवाद।


0

पिछले कोड को अपने .htaccess में कॉपी करें

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

इस कोड को इस सवाल का जवाब कर सकते हैं, के बारे में अतिरिक्त संदर्भ प्रदान करने क्यों और / या कैसे इस कोड को उत्तर देता सवाल अपनी दीर्घकालिक मूल्य में सुधार।
बेंजामिन डब्ल्यू


0

चरण 1 :

इसे htaccess फ़ाइल में जोड़ें

<IfModule mod_rewrite.c> 
RewriteEngine On 
#RewriteBase / 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^ index.php [QSA,L] 
</IfModule>

चरण 2 :

Codeigniter config में index.php निकालें

$config['base_url'] = ''; 
$config['index_page'] = '';

चरण 3 :

Apache कॉन्फ़िगरेशन (कमांड) में htaccess को ओवरराइड करने की अनुमति दें

sudo nano /etc/apache2/apache2.conf और फ़ाइल संपादित करें और इसमें बदलाव करें

AllowOverride All

www फ़ोल्डर के लिए

चरण 4 :

सक्षम अपाचे मॉड रीराइट (कमांड)

सुडो a2enmod फिर से लिखना

चरण 5:

रिस्टार्ट अपाचे (कमांड)

sudo /etc/init.d/apache2 restart
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.