更改Magento域会中断URL重写

时间:2013-04-04 10:45:18

标签: magento url-rewriting subdomain

我刚刚启动了我的第一个Magento商店(在CentOS和Apache上),我已经从我的设置子域切换 - http://prelive.mydomain.com(一切正常,启用了网址重写和工作) - 到实际子域http://www.mydomain.com,基本上只需执行以下操作:

  1. 通过管理界面清除缓存
  2. 更新安全& db中不安全的基本URL
  3. 将整个站点文件系统从/ var / www / html / prelive移动到/ var / www / html / www(我试过复制,但它引起了各种权限问题,我稍后会弄清楚!)
  4. 手动编辑var / resource_config.json中的媒体库路径
  5. 像这样更新我的虚拟主机:

    <VirtualHost *:80>
        DocumentRoot /var/www/html/www
        ServerName www.mydomain.co.uk
        ServerAlias www.mydomain.co.uk
        ErrorLog logs/www.mydomain.co.uk-error_log
    </VirtualHost>
    
  6. 像这样编辑基本.htaccess文件()

    SetEnvIf Host www\.mydomain.co.uk MAGE_RUN_CODE=angling_r_en
    SetEnvIf Host www\.mydomain.co.uk MAGE_RUN_TYPE=store
    SetEnvIf Host ^mydomain.co.uk MAGE_RUN_CODE=angling_r_en
    SetEnvIf Host ^.mydomain.co.uk MAGE_RUN_TYPE=store
    
  7. 它几乎可以工作......但是网址重写被打破了。我可以在http://www.mydomain.com上看到该网站,但导航到子页面会获得404(例如http://www.mydomain.com/path/to/product.html),除非我专门更改URL以指向index.php,例如http://www.mydomain.com/index.php/path/to/product.html或{{3 }}

    作为参考,在.htaccess中我也有(在子域切换期间保持不变):

    RewriteBase /
    

    RewriteRule .* index.php [L]
    

    对我忘记了什么的想法?

    非常感谢 本

2 个答案:

答案 0 :(得分:1)

您很可能需要重新编制目录网址重写索引以合并新的网址更改!请参阅System > Index Management并重新编制目录网址重写索引。

答案 1 :(得分:1)

好的 - 所以问题一直在服务器上,而不是Magento ......

基本上重写不起作用,因为我在httpd.conf和ssl.conf中的VirtualHost容器中都需要这个:

<Directory /var/www/html/www>
        AllowOverride All
</Directory>

我仍然不明白它是如何在旧位置(它肯定没有这个)而不是新的位置...但它的工作原理与之前相同,使用“使用Web服务器”重写“在系统中打开&gt;配置&gt; Web,创建“干净”的URL,由mod_rewrite通过index.php重写。