2013-01-12 85 views
7

我的目錄結構是/ var/www/CI /包含文件夾CI下的所有文件夾,即應用程序,系統。在CI下創建了一個.htaccess文件。無法從CodeIgniter網址中刪除index.php

以下是.htacess中的代碼。

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

仍然localhost/CI /博客給404錯誤。任何人都可以指導這個規則錯誤的地方嗎?

回答

26

請嘗試以下

首先,請確保您設置的配置文件,如下面..

$config['index_page'] = ''; 

還要確保mod_rewrite的在httpd.conf文件中被啓用,之後,使用以下代碼覆蓋位於您的項目根文件夾中的.htaccess文件不在應用程序文件夾中。

RewriteEngine on 
RewriteCond $1 !^(index\.php|public|\.txt) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?$1 
+0

它對我來說就像一個魅力!謝謝! – JunaidKirkire

+0

你是最受歡迎的 –

+0

我已經扔了幾個博客和帖子尋找這個答案,你是唯一一個對我有正確答案,並且在做什麼時非常清楚。非常感謝! –

3

請確保您application/config/config.php文件,這是設置如下:

$config['index_page'] = ''; 

同樣做到這一點:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond $1 !^CI/(index\.php|public|images|robots\.txt|css) 
    RewriteRule ^CI/(.*)$ CI/index.php/$1 [L] 
</IfModule> 

通常你不把CI在自己的目錄,並把applicationsystem在根文件夾中。

+0

做了以上,但仍然無法正常工作。還有其他地方還需要配置嗎? – JunaidKirkire

+0

謝謝神祕的建議。我很感激。 – JunaidKirkire

3

檢查您的Apache配置,以便允許覆蓋。 如果AllowOverride設置爲None,重寫將不適用於您。

添加以下到您httpd.conf(不是你的.htaccess)應該解決您的問題

<Directory "/"> 
    AllowOverride All 
</Directory> 

讓我知道,如果它仍然沒有工作。

+0

請糾正我,如果我錯了,但不應該是httpd.conf?我的httpd.conf文件也是空的。 – JunaidKirkire

+0

感謝您花時間回答我的問題。我很感激。 – JunaidKirkire

+0

對不起,我的錯誤...它是httpd.conf!我確定了我的答案。我希望這個解決方案有幫助 – ashiina

1

使用以下步驟,
1.在文檔根目錄[myroot_folder/.htaccess]中創建.htaccess文件。
2。在application/config/config.php打開配置文件並執行以下操作

$config['index_page'] = ''; 

從自己的基本網址刪除index.php
如果是$config['base_url']= 'http://localhost/myroot_folder/index.php';
將其更改爲$config['base_url']= 'http://localhost/myroot_folder/';

現在打開.htaccess文件,並添加以下代碼塊

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

如果你沒有工作了,但你這樣做了,試試這個:

變化的AllowOverride無的AllowOverride在的/ etc/apache2的/網站可用/默認虛擬主機文件中的所有

Details here

1

這工作。雖然,請確保您的的mod_rewrite啓用,

  1. 找到Apache的安裝文件夾內的C:\wamp\bin\apache\apache2.4.9\conf文件夾下的文件httpd.conf
  2. httpd.conf文件中找到以下行#LoadModule rewrite_module modules/mod_rewrite.so.您可以通過搜索關鍵字「mod_rewrite」輕鬆完成此操作。
  3. 從行首開始刪除##表示該行被註釋。
  4. 然後重啓apache服務器
  5. 在執行phpinfo()時,您可以在加載的模塊部分中看到mod_rewrite
0
1) make .htaccess file and put this code 

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

2) change 

$config['index_page'] = ''; 
remove index.php present in config.php file 

3) rewrite on from your server