Apache: как переписать некоторые динамические URL - PullRequest
1 голос
/ 05 октября 2011

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

Исходный URL, который необходимо сопоставить, имеет следующий формат: http://www.example.com/gallery/?level=picture&id=49

, и мне нужно, чтобы они были в следующем формате: http://www.example.com/index.php?page=gallery&level=picture&id=49

Однако в папке также содержатся некоторые файлы изображений.Мне нужно, чтобы любой URL-адрес указывал прямо на изображения, которые нужно оставить в покое, и любой URL-адрес, указывающий на страницу php, должен быть переписан, как указано выше.

Я знаю, что хочу сделать, но не знаю, как это сделать.В основном мне нужно сделать это в .htaccess:

if(url contains 'gallery/' AND filetype != bmp/jpg/png/etc){
REPLACE '/gallery/' WITH '/index.php?page=gallery&' AND append original query string variables
}

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

1 голос
/ 06 октября 2011

Итак, я нашел решение, которое позаботилось об этой проблеме для меня.У меня это работает в моем файле .htaccess сейчас.

RewriteCond %{REQUEST_URI} !\.(bmp|jpg|jpeg|png|gif)$
RewriteRule ^gallery/$ /index.php?page=gallery [R=302,QSA]

Первая строка (из того, что мне сказали) исключает перечисленные типы файлов от воздействия этого правила, потому что, как я уже упоминал, я сделалне хочу, чтобы URL переписывался для изображений.

Вторая строка принимает URL-адрес, подобный следующему: http://www.yoursite.com/gallery/?level=picture&id=52

и превращает его в следующее: http://www.yoursite.com/index.php?page=gallery&level=picture&id=52

иоставляет исходную строку запроса на месте, в дополнение к новой переменной "page = gallery".Он также выполняет редирект 302, чтобы пользователю отображался правильный адрес в браузере.

Не уверен, что это кому-нибудь пригодится, но решил, что, поскольку я написал об этом, я опубликую решениеЯ тоже нашел.

0 голосов
/ 05 октября 2011

Это может быть более общим, чем вы хотите, но это также позволит избежать перезаписи других существующих файлов.

...