2010-07-08 154 views
2

我已將端口8080上的Apache虛擬主機配置爲指向我的magento網站。在默認端口80上運行其他端口上的magento

 Listen 8080 

     <VirtualHost 6x.2x.6x.1x:8080> 

    ServerAdmin [email protected] 
    ServerName domainname.com 
ServerAlias *.domainname.com 
DocumentRoot /var/www/sites/domain/ 

    <Directory /> 
      Options FollowSymLinks 
      AllowOverride all 
      Order allow,deny 
      allow from all 
    </Directory> 

    ErrorLog /var/log/apache2/error.log 

    # Possible values include: debug, info, notice, warn, error, crit, 
    # alert, emerg. 
    LogLevel warn 

    CustomLog /var/log/apache2/access.log combined 
    ServerSignature On 

<LocationMatch ".*\svn.*"> 
    Order allow,deny 
    Deny from all 
</LocationMatch> 

      </VirtualHost> 

當我去的網站www.domain.com:8080的JS,CSS,IMG和其他東西都沒有加載,因爲端口未連接到鏈接

下面是一個重寫規則在Magento的.htaccess似乎並不工作:

  <IfModule mod_rewrite.c> 

############################################ 
## enable rewrites 

    Options +FollowSymLinks 
    RewriteEngine on 

############################################ 
## you can put here your magento root folder 
## path relative to web root 

    #RewriteBase /magento/ 

############################################ 
## workaround for HTTP authorization 
## in CGI environment 

    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 

############################################ 
## always send 404 on missing files in these folders 

    RewriteCond %{REQUEST_URI} !^/(media|skin|js)/ 

############################################ 
## never rewrite for existing files, directories and links 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-l 

############################################ 
## rewrite everything else to index.php 
    RewriteCond %{SERVER_PORT} !^8080$ 
    RewriteRule .* http://6x.2x.6x.1x:8080/index.php [L] 

     </IfModule> 

是重寫-MOD不同端口上運行的Magento網站的解決方案?如果是,那麼當前重寫規則中的錯誤在哪裏?

謝謝你,

Margots

回答

6

我管理,其中一個直播店端口80上一個服務器和開發站點上運行的Magento站點上的端口另一臺服務器上運行3000。當複製從直播現場dev下所有我需要做的是改變在core_config_data表中的兩行,具有:

  • 路徑=「網頁/不安全/ BASE_URL」
  • 路徑=「網絡/安全/ BASE_URL 「

您需要在網址的末尾添加您的端口號,這就是全部。在我而言這兩個行是這樣的:

(config_id,範圍,scope_id,路徑, 值)

(默認值0,網頁/不安全/ BASE_URL, ,http://www.dev-server.com:3000/

(默認值0,網絡/安全/ BASE_URL, ,http://www.dev-server.com:3000/

請注意,我沒有證書我的dev的服務器上,所以我不USI ng https作爲安全的base_url。如果您希望使用https,則應將該設置更改爲https,並且應該在末尾省略自定義端口。

標準.htaccess文件的修改不需要,應該可以避免。

編輯

如果您沒有訪問您可以嘗試創建一個PHP文件,該文件將修改數據庫中使用Magento的數據庫:

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', '1'); 

require_once ("app/Mage.php"); 
Mage::app('default'); 

$db = Mage::getSingleton('core/resource')->getConnection('core_write'); 

$db->query("UPDATE `core_config_data` SET `value` = 'http://dev-server.com:3000/' WHERE `path` = 'web/secure/base_url';"); 

$db->query("UPDATE `core_config_data` SET `value` = 'http://dev-server.com:3000/' WHERE `path` = 'web/unsecure/base_url';"); 
?> 

你需要把這個文件根magento文件夾或更改路徑爲Mage.php,如果你把它放在別的地方。

+0

Silvo謝謝你,它看起來像一個解決方案,但我現在沒有DB訪問來檢查它。一旦我做了,我會讓你知道它是如何工作的 – latvian 2010-07-09 02:48:03

+0

@latvian:我添加了一個用php文件更改數據庫的方法,也許你會發現它有幫助。 – silvo 2010-07-10 07:03:55

+0

謝謝西爾沃。它做了詭計。你是最棒的!:) – latvian 2010-07-11 02:09:56

4

我還沒有嘗試過(我因爲...不想殺死我的店),但我認爲你可以更改端口在Magento管理。

在System/Configuration/Web/Base URL中。試着將端口添加到那裏的URL。那樣有用嗎?

你不能重寫Magento使用mod_rewrite在其HTML輸出中寫入的URL。請求錯誤的URL(沒有:8080端口)甚至不會到達您的服務器。

UPDATE:

查看HTML輸出的來源(即去你店與您的網頁瀏覽,然後按CTRL-U或其他)。像以下這樣的標籤是否有正確的URL,包括端口?

<script type="text/javascript" src="http://yourstore.com:8080/js/prototype/prototype.js"></script> 
+0

感謝您播放pableu。 我無法進入管理員,因爲該網站既不是前臺也不後臺 我將如何訪問系統/配置/網頁/基地址? 沒有鏈接不包括端口,這是問題。你是說當magent包含js,css文件等時,它不會對基礎url進行用戶重寫規則? 再次感謝您的幫助 – latvian 2010-07-09 02:12:51

+0

不,Magento根據重寫規則不會重寫其URL。它從不查看.htaccess文件。 * webserver *使用.htaccess處理*傳入*請求。重寫規則從不用於在服務器端創建URL。無論如何,如果你無法訪問管理員,你必須更改MySQL中的URL,正如Silvo在他的回答中所描述的那樣。 – pableu 2010-07-09 07:58:56

0

你缺少這樣的:

NameVirtualHost 6x.2x.6x.1x:8080 

也許你只是沒有在這裏,因爲你的網站正在複製?

如果Magento從錯誤的網站加載圖片,您在Magento的.htaccess文件中無能爲力:圖片請求永遠不會到達那裏。他們會去任何其他網絡服務器上運行的端口80.

如果Magento正在構建絕對鏈接,包括協議和主機(一個非常毫無意義的帶寬浪費恕我直言),你只能有這個問題。我的建議是,你看看應用程序設置,看看是否有地方指定網站的基本網址(因爲應用程序似乎無法自己找到它)。

(我試圖訪問Magento的演示網站,但它需要登記。)

+0

Magento確實爲所有內容編寫絕對URL。這有點毫無意義,但我從來沒有考慮過關閉它。帶寬並不重要,因爲我們使用mod_gzip(或者mod_deflate,我不記得)。這裏是一個Magento的演示商店:http://demo.magentocommerce.com/正如你所看到的,所有的腳本,CSS,圖像都是通過絕對URL鏈接的。 – pableu 2010-07-08 10:26:23

+0

感謝Alvaro回放 我的網站正在加載,但沒有js,css,img src = loaded。然後當我點擊鏈接時,顯示'找不到頁面'。我已經嘗試過並且沒有指定NameVirtualHost,並且都是相同的結果。我喜歡你的建議來查看應用程序設置。我想我將不得不在數據庫中做,因爲我沒有訪問前端或後端。 再次感謝 – latvian 2010-07-09 02:27:37

1

顯示的所有方法似乎都使用非常複雜的過程來執行此操作。

這是非常簡單的,更改URL以包括管理員>系統>配置>網絡端口>的url

在那裏,你可以定義基本URL,皮膚和媒體的URL。