Дружественный URL с mod_rewrite

У меня есть такой URL

http://localhost/rilo/listing.php?id=2

где "rilo" - это корень, и я хотел бы получить дружественный URL-адрес, например

http_//localhost/rilo/listing/2.html

А вот и хтакцесс

Options +FollowSymLinks -MultiViews

# Turn mod_rewrite on
RewriteEngine On
RewriteBase /rilo

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?listing/([a-zA-Z_]+).html$ listing.php?id=$1 [QSA,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(.*)/index\.php [NC]
RewriteRule ^ /%1 [R=301,L]

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

Вы можете помочь мне? Где ошибка?


person Marco Abate    schedule 08.08.2013    source источник
comment
Вы не сказали нам, чего вы хотите, чтобы произошло/что происходит на самом деле.   -  person Oliver Matthews    schedule 08.08.2013
comment
Извините, Оливер, я отредактировал свой запрос   -  person Marco Abate    schedule 08.08.2013


Ответы (1)


Замените свой код на этот:

Options +FollowSymLinks -MultiViews

# Turn mod_rewrite on
RewriteEngine On
RewriteBase /rilo

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?listing/([^.]+)\.html$ listing.php?id=$1 [QSA,L,NC]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(.*)/index\.php [NC]
RewriteRule ^ %1 [R=301,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+[^/]+/(listing)\.php\?id=([^&\s]+) [NC]
RewriteRule ^ %1/%2.html? [R=301,L]

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
person anubhava    schedule 08.08.2013
comment
Если этот ответ помог вам решить вашу проблему, отметьте его как принятый, чтобы пользователи, столкнувшиеся с подобной проблемой в будущем, могли легко ее увидеть. - person anubhava; 08.08.2013