@chernyavsky

Как сделать прозрачный редирект?

Доброго времени суток!

Есть папка userstorage. В ней пользователи хранят свои одностраничники (они же лендинги). У каждого пользователя свой id. У Васи Пупкина id равен 123 и его файлы находятся по адресу /userstorage/123. В каждой папке лежит index.html

Какая цель преследуется? – прозрачный редирект от id([0-9]+)/... в userstorage/$1/...

  • example.com/id123 вернет index.html (или 404)
  • example.com/id123/ тоже вернет index.html (или 404)
  • example.com/id123/main.css вернет main.css (или 404)
  • example.com/id123/images/boobs.raw вернет boobs.raw (или 404)
  • Просмотр содержимого папок запрещен, поэтому на запрос example.com/id123/images/ должен произойти прозрачный редирект на index.php?_url=directory_list_page


Что уже получилось: прозрачный редирект на example.com/id123/ происходит, а без последнего слеша нет. Если убрать -Indexes из htaccess, то при попытке выйти (из /id123/foo/bar) в папку на уровень выше происходит прямая переадресация, т.е. на выходе получаем /userstorage/123/foo/

Собственно, как? как это сделать?
Мануал курил, с трудом понимаю, рыскал по инету, разбирался с примерами чтобы понять, как сделать каждую часть, но... если я здесь, значит хреново у меня получается )
  • Вопрос задан
  • 2493 просмотра
Пригласить эксперта
Ответы на вопрос 1
DAVIDhaker
@DAVIDhaker
Для этой задачи нужен модуль RewriteRule
Деректива RewriteRule:

RewriteRule ^PATTERN$ /REDIR [FLAGS]

RewriteRule ^user/([0-9]+)$ /users/profile/$1 [L,QSA] - перенаправит все страницы site.com/user/([0-9]+) на /users/profile/$1

Все страницы которые совпадут с регулярным выражением ^user/([0-9]+)$ (например site.com/user/23) будут переадресованы на site.com/users/profiles/123

Code .htaccess:
RewriteEngine On
RewriteBase /

RewriteRule ^id([0-9]+)/?$ /userstorage/$1/index.html [L,QSA]
RewriteRule ^id([0-9]+)/main.css?$ /userstorage/$1/main.css [L,QSA]
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы