.htaccess: переписать GET как семантический URL и эмулировать папку

1

Я хочу переписать это:

  • mysite.com/альбомы > mysite.com/albums.php
  • mysite.com/альбомы/ > mysite.com/albums.php
  • mysite.com/альбомы/foo или /albums/foo/ > mysite.com/albums/foo.html (проверьте следующую строку)
  • mysite.com/альбомы/foo.html > mysite.com/albums.php? album = foo
  • mysite.com/альбомы/foo/bar или /альбомы/foo/bar/ > mysite.com/альбомы/foo/bar.html (проверьте следующую строку)
  • mysite.com/альбомы/foo/bar.html > mysite.com/albums.php? album = foo & photo = bar

Текущий .htaccess:

RewriteEngine on
RewriteRule /albums/(.*)/(.*)/ albums.php?album=$1&photo=$2
RewriteRule albums/(.*)/(.*) albums.php?album=$1&photo=$2
RewriteRule /albums/(.*)/ albums.php?album=$1
RewriteRule albums/(.*) albums.php?album=$1
RewriteRule /albums/ albums.php

Но беспорядок с ошибками, как это может хорошо работать?

ПРИМЕЧАНИЕ. Это должно работать только с /albums.php, а не с другими .php файлами, такими как /index.php, /contact.php и т.д.

  • 0
    Не понятно, что вы подразумеваете под mysite.com/albums/foo > mysite.com/foo.html . Существует ли /foo.html ?
  • 0
    @anubhava Извините, две ошибки при вводе исправлены.
Показать ещё 1 комментарий
Теги:
.htaccess
mod-rewrite

1 ответ

1
Лучший ответ

Вы можете попробовать эти правила в своем корневом каталоге.htaccess:

Options -MultiViews
RewriteEngine on

RewriteRule ^albums/([\w-]+)/([\w-]+)(?:\.html|/)?$ albums.php?album=$1&photo=$2 [L,QSA,NC]

RewriteRule ^albums/([\w-]+)(?:\.html|/)?$ albums.php?album=$1 [L,QSA,NC]

RewriteRule ^albums(?:\.html|/)?$ albums.php [L,NC]

Ещё вопросы

Сообщество Overcoder
Наверх
Меню