Большой протест с удалением анонимного WIKI_VIEW состоит в том, что неаутентифицируемые пользователи не видят "целевую страницу" (если Вы хотите инструкции относительно того, как получить доступ, и т.д.), они только видят ошибку разрешения.
Настроенные "Мелкомодульные Полномочия", и можно указать части сайта, чтобы быть доступными для анонимных пользователей полностью вниз к ограничению всего доступа кроме страницы WikiStart.
Я прогрессивно предлагал бы заменить поля. Что-то вроде:
(непротестированный)
# 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]
У меня был 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 -
) это уменьшило бы сложность Вашего переписывать правила.
-w350-h10-q90.jpg
как отклонено к -w-350-h-10-q-90.jpg
– Sam
7 December 2010 в 07:53
RewriteCond %{REQUEST_URI} ^IMG.*$
перед тем блоком, таким образом, Apache не выполняет каждый запрос через все те RewriteRules напрасно. – Chris S 6 December 2010 в 16:33