Существует ли Изящное решение переписать длинное изображение? URL запроса в cachable_nice_urls, с помощью только апачский htaccess?

Большой протест с удалением анонимного WIKI_VIEW состоит в том, что неаутентифицируемые пользователи не видят "целевую страницу" (если Вы хотите инструкции относительно того, как получить доступ, и т.д.), они только видят ошибку разрешения.

Настроенные "Мелкомодульные Полномочия", и можно указать части сайта, чтобы быть доступными для анонимных пользователей полностью вниз к ограничению всего доступа кроме страницы WikiStart.

3
задан 14 December 2010 в 05:01
2 ответа

Я прогрессивно предлагал бы заменить поля. Что-то вроде:

(непротестированный)

# Rewrite imgcpu?src= thumbnail maker to nice static urls
RewriteCond %{REQUEST_URI} ^IMG.*$
RewriteRule ^IMG-(.+)_w([^_]+)(_.*)$ imgcpu\?src=$1\.jpg&w=$2$3 [C]
RewriteRule ^(imgcpu[^_]*)_h([^_]+)(_.*)$ $1&h=$2$3 [C]
RewriteRule ^(imgcpu[^_]*)_q([^_]+)(_.*)$ $1&q=$2$3

и так далее, пока Вы не получаете все поля, преобразованные один за другим вместо того, чтобы пытаться сделать их внезапно. Каждое правило будет применено последовательно. Это должно работать на поля в любом порядке и позволить, чтобы они были дополнительными.

Уезжайте [C] от последней из этой Цепочки правил.

Править:

Это, более вероятно, будет работать, чем любая ерунда, которую я отправил до сих пор:

# Rewrite imgcpu?src= thumbnail maker to nice static urls
RewriteCond %{REQUEST_URI} ^IMG.*$
RewriteRule ^IMG-(.+\/photo_[^_]+)(_.*)*(\.[^.]+)$ imgcpu\?src=$1$3$2/ [C]
RewriteRule ^(imgcpu.*\..+)_w([^_]+)(_.*)*$ $1&w=$2$3 [C]
RewriteRule ^(imgcpu.*\..+)_h([^_]+)(_.*)*$ $1&h=$2$3 [C]
RewriteRule ^(imgcpu.*\..+)_q([^_]+)(_.*)*$ $1&q=$2$3 [C]
RewriteRule ^(imgcpu.*\..+)_c([^_]+)(_.*)*$ $1&c=$2$3 [C]
RewriteRule ^(imgcpu.*\..+)_m([^_]+)(_.*)*$ $1&m=$2$3 [C]
RewriteRule ^(imgcpu.*\..+)_f([^_]+)(_.*)*$ $1&f=$2$3 [C]

Основные предпринятые улучшения включают звездочку перед первым знаком доллара, которые предназначаются, чтобы заставить вещи работать, если переписываемое поле является последним в строке запроса и изменении первого [^_]* кому: .*. Заметьте, как я оставил упоминание самого большого провала до последнего - надежда, что это не будет замечено? Ожидать... что? Заметить его пытающийся быть незамеченными? Разговор о не замечать... Я только что заметил, что имена файлов включают символы нижнего подчеркивания!

Править: Время скидки Fer реалов - fer shur!

Править:

Попробуйте это вместо первого RewriteRule (все другие строки остаются такими же).

RewriteRule ^IMG-(.+\/.*?)(_[hw]\d+)([^.]*)(\.[^.]+)$/imgcpu\?src=$1$4$2$3/ [C]

Это зависит или от высоты или от поля width, являющегося первым среди полей. Вы могли включить больше букв [hw]. Обратите внимание, однако, что имя файла как изобретенный "/IMG-folder/santa_claus_w2_elves_w200_h100_q75.jpg" (Santa Claus w/2 эльфа) не дало бы корректные результаты.

Редактирование (15 декабря):

RewriteCond %{QUERY_STRING} ^(.*\.[^_]*)_(.)([^_]*)(_.*)?$
RewriteRule ^/imgcpu /imgcpu?%1&%2=%3%4 [N]
RewriteCond %{REQUEST_URI} ^/IMG.*$
RewriteRule ^/IMG-(.+/.*?)(_[hw]\d+)([^.]*)(\.[^.]+)$ /imgcpu?src=$1$4$2$3 [N]
1
ответ дан 3 December 2019 в 07:15
  • 1
    Sam мог бы также хотеть добавить a RewriteCond %{REQUEST_URI} ^IMG.*$ перед тем блоком, таким образом, Apache не выполняет каждый запрос через все те RewriteRules напрасно. –  Chris S 6 December 2010 в 16:33
  • 2
    @Sam: См. мой отредактированный ответ. –  Paused until further notice. 6 December 2010 в 18:18

У меня был regex, который сделал что-то очень похожее однажды, но с чем-то вроде другого формата. Я слонялся без дела с ним немного, но это полностью не тестируется и не закончено (не говоря уже обо мне, гидроразрыв' НЕНАВИДИТ regex's), но надо надеяться это установит Вас на Вашем пути:

RewriteRule ^(.*?\IMG-)(.*)_(\?[^_]*)?_([^_]*)_([^_]*)(.*)$ /imgcpu?src=(?2$2&:\?)$4=$5$6 [LP]

В основном это вытащит Вашу первую часть URL и затем сохранит цикличное выполнение, пока больше не будет _ символы, добавляя их в формате &$1=$2 на URL.

Это будет означать, что необходимо будет использовать формат /IMG-folder1/photo_citty_w_3500_h_10_c_p_q_90.jpg но я уверен, что Вы могли зафиксировать это, чтобы просто ступить один символ, а не использовать подчеркивание.

Позвольте мне предположить создание Вас жизнью настолько легче если Ваш разделитель (_) не используется в части имени файла URL? Существует много других разделителей, которые Вы могли использовать (такие как a -) это уменьшило бы сложность Вашего переписывать правила.

1
ответ дан 3 December 2019 в 07:15
  • 1
    Спасибо Mark для Вашего абсолютно нового понимания. Прежде чем я протестирую его быстрый вопрос: что, кроме того '-' другие допустимые normal-problem-free разделители та любовь кэшей прокси-сервера? Я использование CAN другие разделители, НО verymuch предпочитают короче -w350-h10-q90.jpg как отклонено к -w-350-h-10-q-90.jpg –  Sam 7 December 2010 в 07:53

Теги

Похожие вопросы