.htaccess 301 путь перенаправления и все дочерние пути - PullRequest
2 голосов
/ 15 ноября 2010

Я хочу, чтобы доступ, например, к www.thisdomain.com/docs/path1/path2 для перенаправления на www.thatdomain.com/path1/path2

(обратите внимание, что документы не являются частью нового пути)

У меня есть следующее на www.thisdomain.com:

RewriteEngine on

RewriteRule ^docs/* http://www.domain.com/ [R=301,L]    

Если я захожу на www.thisdomain.com/docs, он направляется на www.thatdomain.com, но если я получаю доступдочерний путь, такой как www.thisdomain.com/docs/path1/path2, не работает.Возможно ли перенаправление перехватить доступ дочернего пути и перенаправить, как мне нужно?Если да, то какие-нибудь указатели?

Спасибо.

Ответы [ 2 ]

5 голосов
/ 15 ноября 2010

С регулярными выражениями * означает любое число предыдущего атома , которое будет соответствовать / docs и / docs /. Попробуйте это:

RewriteEngine on
RewriteRule ^docs$ http://www.domain.com/ [R=301,L,QSA]
RewriteRule ^docs/(.*) http://www.domain.com/$1 [R=301,L,QSA]

(QSA - добавление строки запроса, поэтому /docs/foo?bar=baz не потеряет ?bar=baz.)

2 голосов
/ 12 июня 2013

В соответствии с разделом «Перенаправление старого домена в новый домен с использованием перенаправления htaccess» первый результат Google , который я обнаружил при поиске «перенаправления htaccess» (без двойных кавычек), этого фрагмента кода будет достаточно :

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]

Согласно их описанию техники, он будет перенаправлять каталог, в который файл .htaccess помещается рекурсивно (включая любые дочерние пути), как вы и предполагали. Конечно, для работы директив rewrite должен присутствовать mod_rewrite.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...