Перенаправление htaccess на основе блока параметров URL - PullRequest
1 голос
/ 07 июля 2011

Я пытаюсь сделать перенаправление htaccess на основе параметра в URL. Звучит просто, но моя проблема заключается в следующем: блок параметров, который я хочу перейти влево, а остальные справа.

Пример:

Текущий URL (не существует): http: www.schedjoules.com/102657832.html Желаемый URL: http: www.schedjoules.com/us/102657832.html

Все между 102633352 и 102657832 Я хочу направить на www.schedjoules.com/us/ и все остальное на www.schedjoules.com/en/

Лучшее, что я могу переписать, это RewriteRule ^/([102633352-102657832])\.html$ <a href="http://www.schedjoules.com/us/" rel="nofollow">http://www.schedjoules.com/us/</a>$1\.html [R=301,L]

но это не работает (ошибка 500). Я прочитал половину интернета, но не могу найти решение. Есть ли способ перенаправить по блоку параметров?

Рутгер

1 Ответ

2 голосов
/ 07 июля 2011

Ваше правило совершенно неверно: [102633352-102657832]

Квадратные скобки означают класс символов - соответствует одному из символов. Вы повторяли одни и те же символы несколько раз (например, 1, 0 и т. Д.) + У вас есть символ диапазона -, описывающий недопустимый диапазон (может быть от меньшего к большему 1-2 не 2-1).

В любом случае - эти правила сработают:

RewriteCond $1 >102633351
RewriteCond $1 <102657833
RewriteRule ^(\d+)\.html$ http://www.schedjoules.com/us/$1\.html [R=301,L]
RewriteRule ^(\d+)\.html$ http://www.schedjoules.com/en/$1\.html [R=301,L]
  1. Использовано лексикографическое сравнение (< и >)

  2. Поскольку сравнение не числовое, а скорее символьное, числа были изменены (-1 / + 1 соответственно), в противном случае числа ребер потерпят неудачу.

  3. Эти правила перенаправляют файлы из диапазона в подпапку /us/ и ВСЕ ДРУГИЕ НОМЕРА в /en/.

...