1

I set up my magento store running on LEMP server. Every thing works fine except the url rewrite of category does not work. If I use the url http://mystore.com/catalog/category/view/id/3, then I can see the category view page. But if I click the category on the top menu and its url is rewritten to http://mystore.com/website-sale.html. Then the category page is missing. I got the '404' error message.

1
  • "But if I click the category on the top menu and its url is rewritten to" What's the pre-redirect URL? Commented Sep 26, 2013 at 18:22

3 Answers 3

2

Magento explains how to configure nginx

I thought about shortening the config, but I think this is a bad idea. I don't have any idea about nginx but afaik .htaccess doesn't work, so you have to configure rewrite to index.php by yourself.

But still have a look on the link for the global config!

server {
listen 80;
server_name DOMAIN.com;
rewrite / $scheme://www.$host$request_uri permanent; ## Forcibly prepend a www
}

server {
listen 80 default;
## SSL directives might go here
server_name www.DOMAIN.com *.DOMAIN.com; ## Domain is here twice so server_name_in_redirect will favour the www
root /var/www/vhosts/DOMAIN.com;

location / {
index index.html index.php; ## Allow a static html file to be shown first
try_files $uri $uri/ @handler; ## If missing pass the URI to Magento's front handler
expires 30d; ## Assume all files are cachable
}

## These locations would be hidden by .htaccess normally
location ^~ /app/                { deny all; }
location ^~ /includes/           { deny all; }
location ^~ /lib/                { deny all; }
location ^~ /media/downloadable/ { deny all; }
location ^~ /pkginfo/            { deny all; }
location ^~ /report/config.xml   { deny all; }
location ^~ /var/                { deny all; }

location /var/export/ { ## Allow admins only to view export folder
auth_basic           "Restricted"; ## Message shown in login window
auth_basic_user_file htpasswd; ## See /etc/nginx/htpassword
autoindex            on;
}

location  /. { ## Disable .htaccess and other hidden files
return 404;
}

location @handler { ## Magento uses a common front handler
rewrite / /index.php;
}

location ~ .php/ { ## Forward paths like /js/index.php/x.js to relevant handler
rewrite ^(.*.php)/ $1 last;
}

location ~ .php$ { ## Execute PHP scripts
if (!-e $request_filename) { rewrite / /index.php last; } ## Catch 404s that try_files miss

expires        off; ## Do not cache dynamic content
fastcgi_pass   127.0.0.1:9000;
fastcgi_param  HTTPS $fastcgi_https;
fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
fastcgi_param  MAGE_RUN_CODE default; ## Store code is defined in administration > Configuration > Manage Stores
fastcgi_param  MAGE_RUN_TYPE store;
include        fastcgi_params; ## See /etc/nginx/fastcgi_params
}
}
6
  • I use your config file in the sites-available folder, and run it. I still got the 404 error message. Rewrite to index.php does not work for this category rewrite issue. website-sale.html is defined in url field when you create the category from the backend. Commented Sep 25, 2013 at 18:21
  • Is there anyway to have LEMP server process the .htaccess file? I know this problem is caused by not processing this .htaccess file in the root directory.
    – Adam Shuy
    Commented Oct 26, 2013 at 19:03
  • What do you mean by LEMP? LAMP? Linux Apache MySQL PHP? Then it should do by default. stackoverflow.com/questions/12202387/… If you are running nginx take the config from above Commented Oct 26, 2013 at 19:18
  • I did take the config from above, but still got the same error. What I mean is the nginx config above does not function the same as the .htaccess of LAMP.
    – Adam Shuy
    Commented Oct 27, 2013 at 14:32
  • Sorry, I don't know nginx ... I should have mentioned it. Only only know the ressources :-/ Commented Oct 28, 2013 at 11:53
0

Try system-->configuration and then in your Catalog menu, select catalog and set the "Use Categories Path for Product URLs" to no. This will remove category and catalog in your URLs without having to mess with rewrites.

-1

With nginx, Try this:

System > Configuration -> General > Web > Search Engines Optimization
Switch Use Web Server Rewrites to No

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.