2015-01-15 3 views
1

У меня есть этот файл .htaccess, который в основном предполагается превратить мои ссылки от.htaccess RewriteRule не перекрывая URL

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

в

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

К сожалению, это не делает его.

Я написал это неправильно?

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

EDIT: Я действительно протестировал .htaccess с помощью «deny from all», и он работает.

ответ

3

Ваше текущее правило перезаписи разрешает довольно правильный URL. Он не преобразует фактический адрес /products.php в симпатичный. Вы должны иметь четкое правило, что, как

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] 
+0

Интересно, что он ломает все, и добавляет параметр в качестве суффикса: 'http://www.dsbigiena.ro/Colac-wc-cu-folie-de- Пластик-cu-actionare-manuala-prin-buton /? product-id = Colac-wc-cu-folie-de-plastic-cu-actionare-manuala-prin-buton' –

+1

Alex, вам просто нужно добавить '?' к первому «RewriteRule». Это приведет к удалению дополнительной строки запроса в симпатичном URL-адресе. –