2016-06-07 4 views
-1
RewriteEngine on 
RewriteRule ^(.*)$ http://www.NEWfoobar.com/$1 [R=301,L] 

У меня есть эта строка кода из https://stackoverflow.com/a/7578810, внутри .htaccess и в настоящее время он работает мигрирующими www.OLDfoobar.com на www.NEWfoobar.com и всю его структуру подкаталог просто отлично (предполагаемое поведение, все хорошо).htaccess перенаправления от старого корневого домена на новый подъязыка-Dir домен

сейчас, как добавить дополнительное правило, которое фиксирует www.OLDfoobar.com для перенаправления на одну конкретную страницу в www.NEWfoobar.com? говорят, например, `www.NEWfoobar.com/welcomeToNewDomain

[L] Флаг - это то, что меня достает. и, кстати, я не настолько уверен в том, что касается $1. Это не может быть флагом регулярного выражения для RewriteRuleшаблон, да?

ПРИНЯТ ОТВЕТ

RewriteEngine on 
RewriteRule ^/?$ http://www.NEWfoobar.com/some/sub/directory [R=301,L] 
RewriteRule ^(.*)$ http://www.NEWfoobar.com/$1 [R=301,L] 
+0

Да, вот что й Текущий скрипт работает нормально. кроме этого, я хотел бы реализовать дополнительное правило, в котором он перенаправляет из просто ** olddomain ** в ** newdomain/sub-directory-uri ** – Valkyrurr

+0

@starkeen, мой предыдущий комментарий и параграф 2 так же понятны, как и , так да. :) – Valkyrurr

ответ

1

Вам нужно

RewriteEngine on 
RewriteRule ^(.*)$ http://www.NEWfoobar.com/welcomeToNewDomain [R=301,L] 

The $1 означает использование первого захвата группы, которая является значение в скобках слева.

L в параметрах означает прекращение обработки правил перезаписи (т. Е. Это последнее правило), если применяется совпадение.

В ^(.*)$ средства:

`^` match beginning of string 
`(.*)` match zero or more characters and store in capture group 1 
`$` match end of string 

Если я мисс поняла вы только хотите, чтобы перенаправить запросы корневых, сохраняя при этом старый захват вам нужно добавить новое правило перед тем существующие, который читает

RewriteRule ^/?$ https://www.NEWfoobar.com/welcomeToNewDomain [R=301,L] 

Это будет соответствовать либо пустой путь или просто /

+0

ОК, понял. но он все еще не работает. шаблон RewriteRule * * в основном означает любую строку. поэтому, если я введу 'www.OLDfoobar.com/any-sub-directory-string' ... с учетом предложенной цели, я бы перенаправил на http://www.NEWfoobar.com/welcomeToNewDomain/any-sub- directory-string' – Valkyrurr

+0

@ Valkyrurr Нет, вы бы этого не сделали, потому что я не включил «$ 1» в целевое правило, чтобы он не включал его. Также ключевым элементом является то, что шаблон правила будет соответствовать любому пути в его целостности. Если это правило не работает, каково поведение, которое вы видите? –

+0

@ Valkyrurr У меня, возможно, мисс поняла вопрос немного, см. Мой обновленный ответ. Если вы хотите, чтобы 'www.OLDfoobar.com/any-sub-directory-string' перенаправлялся на один URL-адрес, используйте мой первый ответ. Если вы хотите просто добавить новое правило перезаписи, которое просто «www.oldfootbar.com», тогда вставьте мой второй пример перед вашим существующим переписывающим устройством. –