我已在端口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
答案 0 :(得分:6)
我管理一个magento站点,其中一个服务器在端口80上运行实时商店,一个开发站点在另一个服务器上运行在端口3000上。当将站点从live复制到dev时,我需要做的就是更改两行在core_config_data表中,有:
您需要在网址末尾添加您的端口号,这就是全部。在我的情况下,这两行看起来像这样:
(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捕获,并且还使用另一个浏览器打开了我的网站,该网站正常工作。