簡體   English   中英

CodeIginter,URL和.htaccess的Mod_Rewrite

[英]CodeIginter, Mod_Rewrite on URLs and .htaccess

我不確定哪個stackexchange網站最適合此問題,因為我認為它適合幾個問題,特別是取決於最終答案。

我面臨的挑戰是我已經使用CodeIgniter編寫了一個網站。 該站點是一個相當簡單的公司站點。 我已經使用CodeIginter來實現干凈的url和將來擴展站點的功能。 還有一個簡單的博客和“圖庫”,它們都是動態的,由數據庫驅動。

在我的開發環境中,該網站運行良好。 在我的站點暫存空間(該站點推動了我的wordpress博客)上,該站點也可以正常工作。

問題是當我試圖將站點移至生產服務器時,它停止工作。 我已經能夠建立主頁(使用數據庫和資產),所以我可以肯定它們都正常工作。 我將問題縮小為可能的配置問題或mod_rewrite問題。

我必須提出的第一件事(但是我不確定這到底有多重要)是服務器使用CGI / FastCGI,而我的開發和登台服務器使用“ Apache 2.0 Handler”。 這種差異會導致我需要修改我的.htaccess文件嗎? 我將在這里發布可在我的開發/登台環境中使用的基本文件:

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

非常簡單。

當我嘗試使用此.htaccess文件在生產服務器上運行站點時,得到:

無法執行請求的腳本[/ ufs / websites / c / [已編輯] /html/index.php/]:不是目錄

當我將.htaccess更改為:

RewriteEngine on

RewriteBase /
RewriteCond $1 !^(index\.php|images|robots\.txt|sitemap\.xml\.gz|sitemap\.xml|assets)

RewriteRule ^html/(.*)$ /index.php/$1 [L]  #This WILL Present the home page correctly whereas it used to give an error

它會給我主頁,但其他頁面仍然無效。 相反,我會得到404或空白頁。

就目前而言,我對問題的猜測是我的RewriteRule,但我確實不確定。 這可能是我的配置中的設置。 我會繼續四處尋找,但我希望有人能在以前的工作中體會到這一點,這可以幫助我指出正確的方向(或者最好的方向),告訴我我做錯了什么。 :-)

謝謝大家

我對配置的了解不多,但是在黑暗中打了個比方-因為您更改重寫規則的目的還在於確保您擁有

$config['index_page'] = '';

設置在

config.php

代替

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

好吧,您將在原始論壇中看到這個問題被問過千遍了。 這篇文章也有類似的情況,每一次嘗試刪除index.php都可能很挑剔:)請參閱您可以在該文章中嘗試的其他配置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM