Alex Weyland
Alex Weyland

Reputation: 177

.htaccess RewriteRule not overriding URL

I have this .htaccess which basically is supposed to turn my links from

http://www.dsbigiena.ro/products.php?product-id=Colac-wc-cu-folie-de-plastic-cu-actionare-manuala-prin-buton

to

http://www.dsbigiena.ro/Colac-wc-cu-folie-de-plastic-cu-actionare-manuala-prin-buton/

Unfortunately, it's not doing it.

Did I write it wrong?

RewriteEngine On
RewriteBase /
RewriteRule ^([^/]*)/$ /products.php?product-id=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

EDIT: I did indeed test the .htaccess with "deny from all", and it works.

Upvotes: 1

Views: 186

Answers (1)

Ravi K Thapliyal
Ravi K Thapliyal

Reputation: 51711

Your current rewrite rule only resolve a pretty URL. It won't convert an actual /products.php URL to the pretty one by itself. You need to have an explicit rule for that as

RewriteEngine On
RewriteBase /

# Redirects from a normal URL to a pretty one
RewriteCond %{THE_REQUEST} \ /products\.php\?product-id=([^\ ]+) [NC]
RewriteRule ^ /%1/? [L,R=301]

# Resolves the pretty URL
RewriteRule ^([^/]+)/?$ /products.php?product-id=$1 [QSA,L]

Upvotes: 3

Related Questions