Перенаправить 301 из каталога в отдельный файл

У меня небольшие проблемы с поиском чего-то простого. Я хочу 301 перенаправить все в каталоге в один файл в новом месте.

В моем .htaccess я уже пробовал следующие ...

Redirect 301 /myDir/ http://www.mydomain.com/myNewDir/index.html

и это ...

Redirect 301 /myDir/ http://www.mydomain.com/myNewDir/

и это ...

Redirect 301 /myDir http://www.mydomain.com/myNewDir

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

После поиска в Google я увидел кое-что, в котором говорилось, что нужно сделать это ...

Redirect 301 ^/myDir(.*) http://www.mydomain.com/myNewDir

Но это просто то же самое ... оно сопоставляет существующее местоположение файла с концом URL-адреса.

Было легко найти множество «. Htaccess redirect» руководств в Интернете, но они, кажется, показывают только очевидные примеры, такие как «однозначное сопоставление файлов» или «однозначное сопоставление каталогов». '. В этих руководствах также, кажется, игнорируется объяснение различных соответствующих файловых директив и того, как их правильно использовать.

Эта конкретная учетная запись хостинга - мусор, и на ней также установлены расширения FrontPage. Мод-перезапись не работает (ломает весь сайт), но строки Redirect 301 работают нормально. Так что, пока я не смогу переместить этот новый сайт (не FrontPage) в более надежную учетную запись хостинга, мне нужно будет придерживаться однострочника Redirect 301 .


Как я могу просто использовать Redirect 301 для перенаправления всего в / myDir / в тот же единственный файл , расположенный по адресу /myNewDir/index.html ? (Я бы предпочел использовать только / myNewDir / , если это возможно). Пожалуйста, подробно объясните файловые директивы, используемые в вашем решении.


ОБНОВЛЕНИЕ:

Ранее принятый ответ не работает.

Пример:

RedirectMatch 301 /myDir1/(.*) http://mydomain.org/newpath/myDir1/index.html

... выдает ошибку «Слишком много перенаправлений при попытке открытия» .

Это потому, что / myDir1 / (. *) соответствует в любом месте в строке, поэтому, если целевой URL содержит / myDir1 / где угодно, а не только корень, он будет перенаправлен в неприятный цикл.

Правильное решение см. В моем собственном опубликованном ответе.

5
задан Sparky 19 October 2011 в 23:22
поделиться