Приятелски url с mod_rewrite

Имам URL като този

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

където "rilo" е коренът и бих искал да получа приятелски URL като

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

И ето го htaccess

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