Magento使用Web服务器重写根本不工作

时间:2014-04-05 22:24:23

标签: .htaccess magento mod-rewrite

我刚刚将Magento 1.8.1.0放到我的Digital Ocean托管服务器上。

我已将“使用Web服务器重写”设置为是,并且所有链接都会导致404 Not Found。 Magento目录位于/var/www/sitename.com/public_html/。那里有一个默认的Magento .htaccess。服务器也启用了mod_rewrite。此外,apache conf还有AllowOverride All

我已经尝试了大约8个小时的许多不同的.htaccess文件和conf,似乎没有任何工作。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

您是否已对目录网址重写编入索引或重新编制索引? Magento Web服务器重写实际上是由Magento应用程序处理的 - 它们不在.htaccess中处理,因此修改.htaccess将无济于事。

我建议您恢复原始.htaccess,将Magento主题设置为默认主题,重新编制目录网址重写索引,清除缓存以获得更好的衡量标准,然后重试。

如果仍然无效,请检查数据库表core_url_rewites。此表中应该有很多行 - 对于商店中的每个产品都有三行 - 而某些行将重写为类别,大多数行将重写为产品。下面是一个示例产品重写行,可帮助您确定该表是否具有正确的数据:

139349 2 product/2866/79 topcatname/subcatname/producturlkey.html catalog/product/view/id/2866/category/79 1 NULL NULL 79 2866

如果该表看起来具有正确的数据,那么要继续跟踪此错误,您应该询问该函数:

//file: app/core/Mage/Core/Controller/Varien/Front.php
//class: Mage_Core_Controller_Varien_Front
    public function dispatch(){
      //...
    }

答案 1 :(得分:0)

启用模块重写并重新启动Apache为我做了诀窍。

sudo a2enmod rewrite
sudo service apache2 restart

您可以看到加载了哪些模块:

apache2ctl -M

如果启用了重写模块,应该看到类似的内容:

....
negotiation_module (shared)
php5_module (shared)
rewrite_module (shared)
setenvif_module (shared)
status_module (shared)
....