使用Nginx时从Magento URL中删除index.php

时间:2013-05-23 23:24:54

标签: magento nginx

我目前的设置是使用Magento 1.7.0.2运行Ubuntu 12.04 LTS,Nginx 1.4.1。

今天早些时候,我建立了一个基本的Magento商店。我没有安装任何模块,我没有进行任何配置更改。我只是想在深入研究系统之前先奠定基础。我想删除域名和文件路径之间出现的“index.php”。

我的vhost来自nginx网站:

server {
  root     /path/to/root/domain/html;
  index    index.php;
  error_log /path/to/error/log/error.log;
  access_log /path/to/transfer/log/transfer.log;
  server_name   servername.com;
  location / {
    index index.html index.php;
    try_files $uri $uri/ @handler;
    expires 30d;
  }

  location ^~ /(app|includes|lib|media/downloadable|pkginfo|report/config.xml|var)/ {     internal; }
  location /var/export/ { internal; }
  location /. { return 404; }
  location @handler { rewrite / /index.php; }
  location ~* .php/ { rewrite ^(.*.php)/ $1 last; }
  location ~* .php$ {
    if (!-e $request_filename) { rewrite / /index.php last; }
    expires off;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param MAGE_RUN_CODE default;
    fastcgi_param MAGE_RUN_TYPE store;
    include fastcgi_params;
  }
}

我看到其他人一直在寻找这个问题的答案,有解决方案的代码片段,但这些都不适用于我的系统。当我对我的Nginx vhost进行更改时,我总是重新启动nginx,但index.php仍会显示在URL中。

2 个答案:

答案 0 :(得分:0)

Nginx配置看起来很好。在管理面板的system > configuration > general > web中,将Use Web Server Rewrites设置为yes并清除magento中的缓存。

答案 1 :(得分:0)

将此添加到magento nginx vhost。

 location / {
            if (!-e $request_filename) {
                    rewrite ^/([^?]*)(?:\?(.*))? /index.php?title=$1&$2 last;
            }
            if ($uri ~* "\.(ico|css|js|gif|jpe?g|png)(\?[0-9]+)?$") {
                    expires max;
                    break;
            }
    }