2011-10-24 60 views
0

我有一個codeigniter應用程序,我想從URI中刪除index.php。所以從codeigniter wiki中我使用了這個腳本。重新編寫.htaccess在codeigniter應用程序中的url重新編寫

它改變了一個配置後,停止工作,在這個改變後,所有我的url只返回主頁。無論我用什麼鏈接,它只會給我我網站的主頁。所以我恢復到index.php,但服務器仍然以同樣的方式工作。我試圖徹底刪除.htacess文件,然後用新的實際上可以工作的新文件進行更新,但即使如此,其工作方式也是如此。 (所有的網址都重定向到主頁)我完全不知道線索,我的腳本或服務器有什麼問題。

P.S:使用.htacess時,我確實使$ config [「index」]爲空。

UPDATE

現在我刪除一切從我的.htaccess文件,我只有這這是必不可少的一部分,從URI段

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

刪除的index.php即使只有這些都是我網址只會將我帶到主頁。至於發生了什麼,我無能爲力。

+0

什麼是您的服務器平臺?你有沒有嘗試改變config.php中的'uri_protocol'設置?另外,如果在那裏有什麼奇怪的東西,那麼顯示你的routes.php也不會有什麼傷害的。 –

回答

1

在您的應用程序/配置/ config.php文件嘗試改變的值:

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

到:

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

如果還沒有工作,嘗試留下ng選項(PATH_INFO,QUERY_STRING,ORIG_PATH_INFO)。

0

你的ErrorDocument行在<IfModule !mod_rewrite.c>裏面,我看起來像你沒有安裝mod_rewrite模塊。 (如果你這樣做了,該行將被忽略。)ErrorDocument 404 /index.php行是一個黑客,它可以讓你訪問/index.php文件,以防萬一請求進入不存在的文件。

要在CodeIgnitor中設置404頁面,您需要編輯您的routes.php文件。

$route['404_override'] = 'general/not_found'; 

More details.

+0

我已經做到了。我已經把它放在那裏。我也確信mod_rewrite已安裝,我檢查了配置,並且如果你錯過了,這件事情一直工作,直到我改變了一些配置,然後恢復回來。 – swordfish

+0

如果更改ErrorDocument行有任何影響,您的mod_rewrite模塊安裝不正確。 – AndrewR

+0

此外,如果您的重寫規則正常工作,則沒有理由擁有ErrorDocument行。這兩個檢查'!-d'和'!-f'的rewritecond行將匹配文件系統中不存在的任何請求。 – AndrewR