在默认端口80上运行其他端口上的magento

在默认端口80上运行其他端口上的magento

问题描述:

我已将端口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

我管理,其中一个直播店端口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

我还没有尝试过(我因为...不想杀死我的店),但我认为你可以更改端口在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

你缺少这样的:

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

显示的所有方法似乎都使用非常复杂的过程来执行此操作。

这是非常简单的,更改URL以包括管理员>系统>配置>网络端口>的url

在那里,你可以定义基本URL,皮肤和媒体的URL。