2014-03-29 44 views
2

我有一個代碼錯誤的鏈接結構的codeigniter網站。它在我當地的環境中工作正常。但是,當我部署到我的共享託管站點時,鏈接停止工作。初始頁面正常加載。我的導航欄的樣子:爲什麼我的.htaccess停止部署工作

<a class="brand" href="#">myproject</a> 
      <div class="nav-collapse"> 
      <ul class="nav"> 
       <li class="active"><a href="#">Home</a></li> 
       <li ><a href="http://localhost/projectname/basecontroller/Facts">Facts</a></li> 
       <li ><a href="http://localhost/projectname/basecontroller/about">About</a></li> 
       <li ><a href="http://localhost/projectname/basecontroller/contact">Contact</a></li> 
       <!--<li ><a href="http://localhost/projectname/basecontroller/privacy">Privacy</a></li>--> 
      </ul> 
      </div><!--/.nav-collapse --> 

我已經部署使用Git到〜/我的帳戶/域/西蒙我的網站。然後,我將public_html simlinked到〜/ myaccount/domains/simon。

lrwxrwxrwx 1 myaccount myaccount 
30 Mar 28 17:35 public_html -> /home/myaccount/domains/simon 

我測試過它的根目錄下面的.htaccess文件,當我嘗試在本地上WAMP的事情:

RewriteEngine on 
RewriteCond $1 !^(index\.php|images|robots\.txt) 
RewriteRule ^(.*)$ /projectname/index.php/$1 [L] 

這似乎通過轉向固定的目錄結構:

http://localhost/projectname/basecontroller/contact 

到:

http://localhost/projectname/index.php/basecontroller/contact 

但是,當我將其推送到我的生產服務器時,這似乎不起作用。我怎樣才能解決這個問題?

+0

一個確保您的主機已經在Apache中啓用了mod_rewrite 。 –

回答

1

我不知道,mod_rewrite是黑魔法。這是一個很棒的工具,但是你從來沒有得到一致的結果,特別是當從一臺服務器更換到另一臺時。

你可以嘗試隨機玩東西(例如:刪除前導/或刪除/projectname/或嘗試設置rewrite_base)。

下面是我們使用我們的一些服務器(但並不對所有的人都工作):

首先,檢查是否在文件系統中存在的URL,什麼也不做(圖像,CSS,機器人。 TXT,index.php文件等):

RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule ^(.*)$ - [L,QSA] 

然後,如果失敗,發送到你的PHP文件(所有的請求檢查之後,如果當前URL已經轉到該文件):

RewriteCond %{REQUEST_URI} !index.php$ 
RewriteRule ^(/?)(.*)$ $1index.php [L,QSA] 

注意特別我們檢查可選的前導斜槓,並將其放在URL的起始位置(如果存在)。你的代碼不檢查,然後總是把一個主要的斜槓。這可能是問題。

另外,你幾乎總是希望在選項列表中有QSA。

+0

有用的信息 - 謝謝 – user61629

1

試試這個,

Options -Multiviews 
RewriteEngine on 
Rewritebase /projectname 
RewriteCond $1 !^(index\.php|images|uploads|robots\.txt) 
RewriteRule ^(.+)$ /index.php?$1 [L] 
1

開放的config.php 然後嘗試改變

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

到這些

| 'PATH_INFO'  Uses the PATH_INFO 
| 'QUERY_STRING' Uses the QUERY_STRING 
| 'REQUEST_URI'  Uses the REQUEST_URI 
| 'ORIG_PATH_INFO' Uses the ORIG_PATH_INFO