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

时间:2010-07-08 06:34:44

标签: apache magento

我已在端口8080上配置Apache虚拟主机以指向我的magento网站。

        Listen 8080

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

    ServerAdmin webmaster@localhost
    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>

Rewrite-mod是在不同端口上运行magento站点的正确解决方案吗?如果是,我目前的重写规则中的错误在哪里?

谢谢,

Margots

5 个答案:

答案 0 :(得分:6)

我管理一个magento站点,其中一个服务器在端口80上运行实时商店,一个开发站点在另一个服务器上运行在端口3000上。当将站点从live复制到dev时,我需要做的就是更改两行在core_config_data表中,有:

  • 路径= “网/不安全/ BASE_URL”
  • 路径= “网/安全/ BASE_URL”

您需要在网址末尾添加您的端口号,这就是全部。在我的情况下,这两行看起来像这样:

  

(config_id,scope,scope_id,path,   值)

     

(默认值为0,web / unsecure / base_url,   ,http://www.dev-server.com:3000/

     

(默认值为0,web / secure / base_url,   ,http://www.dev-server.com:3000/

请注意,我的开发服务器上没有证书,所以我没有使用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';");
?>

您需要将此文件放在root magento文件夹中,或者如果将其放在其他位置,请将路径更改为Mage.php。

答案 1 :(得分:4)

我没有尝试过(因为我不想杀死我的商店),但我认为你可以改变Magento Admin中的端口。

在系统/配置/ Web /基本URL中。只需尝试将端口添加到URL。这有用吗?

您无法使用mod_rewrite重写Magento在其HTML输出中写入的URL。对错误URL(不包括:8080端口)的请求甚至无法到达您的服务器。

<强>更新

查看HTML输出的来源(即使用您的Webbrowser转到您的商店并按CTRL-U或其他)。像下面这样的标签是否有正确的URL,包括端口?

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

答案 2 :(得分:1)

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

这很简单,更改网址以在Admin&gt;中包含端口系统&gt;配置&gt;网络&gt;网址

您可以在此定义基本网址,外观和媒体网址。

答案 3 :(得分:0)

你错过了这个:

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

也许你刚刚没有在这里复制,因为你的网站正在运作?

如果Magento正在从错误的网站上加载图片,那么您在Magento的.htaccess文件中无法做任何事情:图片请求永远不会到达那里。他们将转到您在端口80上运行的任何其他Web服务器。

如果Magento正在构建包含协议和主机的绝对链接(一个非常无意义的带宽浪费恕我直言),那么你只能遇到这个问题。我的建议是,您查看应用程序设置,看看是否有指定站点基本URL的位置(因为应用程序似乎无法单独找到它)。

(我试图访问Magento的演示网站,但需要注册。)

答案 4 :(得分:0)

我遇到了同样的问题,因为我试图将nginx与apache一起使用,并且我将apache端口更改为与端口80不同的端口,因此我可以将nginx用作代理,我更改了apache httpd.conf上的配置文件,但是我的网站无法正常工作,但是我清除了Mac的dns捕获,并且还使用另一个浏览器打开了我的网站,该网站正常工作。