Arhn - архитектура программирования

301 редирект, конфликтующий с RewriteRule

Сегодня мы провели техническое обслуживание и переместили наши веб-форумы из /forums в корневую папку домена.

Ставим редирект 301 в файл .htaccess:

Redirect 301 /forums/ http://www.ourforums.com/

Однако раньше у нас были ссылки, содержащие дубликаты папок /forums. т.е. www.ourforums.com/forums/forums/forum.1

Очевидно, что редирект сверху теперь ведет на /forum.1, которого не существует. Я бы хотел, чтобы старая ссылка действительно указывала на www.ourforums.com/boards/forum.1. Я попытался использовать что-то вроде:

RewriteRule ^/forums/forums http://www.ourforums.com/boards/ [NC,R=301,L]

Независимо от того, что я пробовал, Redirect, похоже, заменяет любые RewriteRules, которые я помещал в тот же файл, независимо от того, помещал ли я их перед Redirect.

Можно ли каким-то образом обеспечить обработку RewriteRule перед перенаправлением?


Ответы:


1

Это связано с тем, что в вашем случае mod_alias (директива Redirect) и mod_rewrite (директива RewriteRule) конфликтуют друг с другом. Оба они играют свою роль в конвейере обработки сопоставления URL-файлов, где URI обрабатываются, переписываются, помечаются и в конечном итоге сопоставляются с ресурсом и ответом. У вас есть правило Redirect, которое применяется, и ответ помечается как перенаправление. Суть директивы Redirect в том, что она соединяет 2 узла пути вместе, что означает:

/forums/

подключен к

http://www.ourforums.com/

Таким образом, все, что находится ниже папки /forums, также перенаправляется. Вот почему он ловит ^/forums/forums.

Вы можете либо придерживаться только mod_rewrite, либо использовать RedirectMatch, который исключает /forums/forums:

RewriteRule ^/forums/forums(.*)$ http://www.ourforums.com/boards$1 [NC,R=301,L]
RewriteRule ^/forums/(.*)$ http://www.ourforums.com/$1 [NC,R=301,L]

or

RedirectMatch 301 ^/forums/(?!forums)(.*)$ http://www.ourforums.com/$1
10.10.2012
  • Спасибо за совет. Ни одно из предложений не работает, но я обнаружил, что могу вручную создавать переадресацию для всех отдельных форумов. Это не мое предпочтительное решение, но, по крайней мере, оно работает, и, к счастью, это то, что я могу написать в сценарии, а не делать вручную. 11.10.2012
  • @user569711 user569711 Мне только что пришло в голову, что у вас есть тег .htaccess, правила перезаписи не будут работать, им нужно удалить ведущую косую черту, чтобы они работали в htaccess, например. RewriteRule ^forums 11.10.2012
  • Спасибо еще раз. Я пробовал, но все равно не повезло. Я ценю, что вы нашли время, хотя. 11.10.2012

  • 2

    Ручное добавление таких операторов перенаправления, похоже, помогает мне:

    Redirect /forums/forums/forum.1 http://www.ourforums.com/boards/forum.1
    
    11.10.2012

    3

    У меня была несколько похожая проблема. Я пытался добавить перенаправления из cpanel, в то время как у меня уже были некоторые правила перезаписи, записанные в моем файле .htaccess. Ошибка, которую я получил, была «Нет тега обработки для». В конечном итоге я сохранил копию моих существующих правил и очистил .htaccess. Потом пошел и добавил все нужные мне редиректы из cpanel, а потом в конце вернул свои собственные правила перезаписи в конец файла. Это сработало для меня

    23.03.2017
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..