2015-08-22 94 views
2

我正在使用.htaccess刪除我的CodeIgniter項目的index.php。我在本地主機上正常工作,但在託管時失敗。我的主機顯示我的結構是這樣的:.htaccess RewriteBase不能正常工作

/ 
-- domains 
---- mydomain.com 
------ public_html 
-------- .htaccess 
-------- (the rest of my CI site) 

在本地主機我的.htaccess是這樣的:

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

我曾嘗試:

RewriteBase/
RewriteBase /domains/ 
RewriteBase /domains/mydomain.com/ 
RewriteBase /domains/mydomain.com/public_html/ 
RewriteBase /mydomain.com/ 
RewriteBase /mydomain.com/public_html/ 
RewriteBase /public_html/ 

,但我不能讓它起作用。我詢問了我的主機提供商,他們說MOD_REWRITE已經啓用。

任何想法高度讚賞。


編輯1

我的索引頁(mydomain.con - 主控制器,指數函數)可正常載入,但任何其他控制器出現故障。

隨着

RewriteBase/

它顯示了我的錯誤:

No input file specified.

任何其他RewriteBase顯示:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, [email protected] and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.

Apache/2 Server at mydomain.com Port 80

+0

你是什麼意思的「不起作用」?是否有任何錯誤消息,你可以發佈(和apache產生什麼)?如果public_html是你的文檔根目錄,並且在這個目錄下找到了index.php文件,它應該和RewriteBase /一起工作,因爲這是在URL到你的根目錄和你的RewriteRule的結果之間輸入的內容。 %{REQUEST_FILENAME ...告訴規則只處理任何不是文件或目錄的東西,這應該是好的,因爲你想把任何請求傳遞給你的前端控制器index.php,是否正確? – Fuzzzzel

+0

是的。我已經更新了我的問題。 RewriteBase /顯示「沒有指定輸入文件」。只有消息。並感謝你爲我澄清這一點。 – Cassandra

回答

1

我已經解決了這得益於@Fuzzzzel評論這使我this

所以我改變了我的.htaccess到

DirectoryIndex index.php 

RewriteEngine on 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond $1 !^(index\.php|robots\.txt) 

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

而且它最後的工作。謝謝! :)

+1

好的,那麼當你打電話給你的網站時你沒有指定一個文件,而只是輸入域名本身。這沒有找到索引文件(通常具有擴展名.htm或.html),所以你必須通過DirectoryIndex指定它。很高興你想出來了。 – Fuzzzzel