【问题标题】:Magento Use Web Server Rewrites Not Working At AllMagento 使用 Web 服务器重写根本不起作用
【发布时间】:2014-04-05 22:24:22
【问题描述】:
我刚刚将 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 文件和配置文件,但似乎没有任何效果。
任何帮助将不胜感激!
【问题讨论】:
标签:
.htaccess
magento
mod-rewrite
【解决方案1】:
您是否为目录 URL 重写编制了索引或重新编制了索引? Magento Web 服务器重写实际上由 Magento 应用程序处理 - 它们不在 .htaccess 中处理,因此修改 .htaccess 将无济于事。
我建议您恢复到原来的.htaccess,将您的 Magento 主题设置为默认主题,重新索引目录 URL 重写,清除缓存以进行良好的测量,然后重试。
如果仍然无法正常工作,请检查您的数据库表 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(){
//...
}
【解决方案2】:
启用模块重写并重新启动 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)
....