我在 mac 中使用 xampp 完全在本地主机中开发了一个多语言 prestashop 商店,它可以工作。后台和商店(前台)。之后,我将它部署到亚马逊,但我的问题来了。后台工作但商店不工作。
浏览器只显示一个 apache 404 页面并告诉我请求的 URL 域/prestashop/en/ 在此服务器上找不到。但它确实存在。此外,后台确认它。
检查 error.log 我发现以下消息:
[2015 年 3 月 12 日星期四 11:12:37] [错误] [客户端 xxx.xxx.xxx.xxx] 文件不存在:/var/www/prestashop/en
就我所见,Apache 将语言 (/en/) 视为文件,而实际上并非如此。我在网上搜索了所有内容,但找不到解决方法。我知道这是一个服务器问题,但不知何故找不到解决方案。
这里怎么了?
我一般是这样设置我的vhost
<Directory /var/www/prestashop/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
解决方案从@LeonardoLanchas的问题帖子中移动。
我通过以下步骤解决了这个问题:
- 删除根.htaccess.
- 清除./cache/smarty/compile下的smarty缓存文件
- 加载未安装的mod_rewrite模块:a2enmod rewrite
- 将 Allowoverride All 指令添加到 /etc/apache2/apache2.conf
<Directory /var/www/prestashop/> Options Indexes FollowSymLinks AllowOverride All </Directory>
- 重启apache2:service apache2 restart
在我的范围内,在这个文件中
/etc/apache2/apache2.conf
这是默认值:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
我改成:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
然后重启
apache2
服务