2013-12-09 83 views
2

我一直在努力的一個網站,對我的本地開發和活動開發環境一直工作正常,當我嘗試將它部署到活動服務器時給我提出問題(客戶希望與他們現有的託管服務提供商託管)。Silverstripe mod_rewrite問題(我認爲)

我上傳了該網站到服務器,並更新了數據庫配置,因爲我之前在我的服務器和其他服務器上都沒有問題。然而這一次,我提交了:

SilverStripe Framework requires a $databaseConfig defined. 

當我刪除從根文件夾中的.htaccess文件,該網站出現了,但是,所有的網址上,像這樣:

www.domain.com/index.php/page_name 

後一些搜索,我遇到了index.php問題的解決方案;下面添加到我的_config文件

Director::setBaseURL('/'); 

我這樣做與URL的正確顯示,但是導航到他們會給我404

我恢復了htaccess文件,並把範圍縮小到這個塊:

RewriteCond %{REQUEST_URI} ^(.*)$ 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_URI} !\.php$ 
    RewriteRule .* framework/main.php?url=%1 [QSA] 

當這是地方,我得到的數據庫配置錯誤上面提到的,當它不存在,我的網址產生404

沒有人有任何我什麼可以在這裏發生什麼?我和主持人有很多來往,他不是很有知識,也不能提供任何建議,而當談到這方面的事情時,我並不是天才。

回答

2

我假設你正在使用SilverStripe 3.1+,則處長配置可/應放置在您的YAML配置文件(靜態將被棄用):

Director: 
    alternate_base_url: '/' 

雖然這主要是有助於對問題進行base_tag

主要ModRewrite問題可能不過加入了RewriteBase解決:

RewriteEngine On 
RewriteBase '/' 

您可以使用'/'或者如果沒有公共根文件夾SS安裝英寸這通常由SilverStripe安裝程序通過檢查$base = dirname($_SERVER['SCRIPT_NAME']);和其他小事情自動處理。檢查install.php5行1483,你可能可以使用它來找出你的RewriteBase。

如果這不起作用,請嘗試全新安裝,而不是將本地安裝複製到服務器。

1

您是否使用_ss_enviroment.php來定義數據庫配置詳細信息?我從一個從SS 2.4遷移到3.1.2的項目中獲得了類似的經歷。

設置這在您的網站_config.php

// Use _ss_environment.php file for configuration 
//Please note that your system should have a file, _ss_environment.php, with database connectivity data, 
require_once("conf/ConfigureFromEnv.php"); 

global $database; 
$database = ''; 

我希望這有助於