We are trying to remove the trailing slash from our URLs (primarily so that duplicate content is not being served).

I know there are many tutorials about how to do this, and I have succeeded in changing the core code so all links are to non-slash URLs. However I am struggling to do the rewrites for anyone who follows a link (or enters one manually) with the trailing slash.

All the tutorials I have read say to change the htaccess file, which after much digging I found out is not being used on our server. So I’m trying to use a rewrite in the DOMAIN.conf file (which is pulled in to the nginx.conf file).

I proposed this to our server hosts;

rewrite ^/(.*)/$ /$1 permanent;
But they said: “That appears to be correct, however we do not support this.” and gave me a link to an online htaccess tester.

Currently our .conf file contains this;

server {
listen <server IP>:80;
server_name www.DOMAIN.co.uk;
root <server root>;

location / {
index index.html index.php;
try_files $uri $uri/ @handler;
expires 30d;
#auth_basic “Restricted”;
#auth_basic_user_file /var/www/htpasswd;

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 /. {
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 <password>;
fastcgi_param HTTPS $fastcgi_https;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# fastcgi_param MAGE_RUN_CODE default;
# fastcgi_param MAGE_RUN_TYPE store;
include fastcgi_params;

(edited to remove certain things and shortened to relevant info).

Can anyone help with what the rewrite would need to be?

View more threads in the same category: