301 через хтакцесс, как?

12
den78ru
На сайте с 12.04.2006
Offline
396
1080

Дано:

1. Раздел сайта 1, лежит в папке - /111/

2. Раздел сайта 2, лежит в папке - /222/

Надо:

Перенаправить 301 ым каждую конкретную страницу из папки /111/ на конкретную страницу в папке /222/. Каждую на свою, уникальную.

Страниц пара сотен.

При этом файл хтакцесс должен лежать в папке /111/

Адреса страниц в записях должны быть относительные.

Спасибо.

Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.
dma84
На сайте с 21.04.2009
Offline
168
#1

У меня это сделано так.


RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} /111/(.*)?
RewriteRule ^.* /222/%1? [R=301,L]

Названия страниц одинаковые, но лежат они в разных папках

DiAksID
На сайте с 02.08.2008
Offline
218
#2
den78ru:
Дано:
1. Раздел сайта 1, лежит в папке - /111/
2. Раздел сайта 2, лежит в папке - /222/

Надо:
Перенаправить 301 ым каждую конкретную страницу из папки /111/ на конкретную страницу в папке /222/. Каждую на свою, уникальную.
Страниц пара сотен.
При этом файл хтакцесс должен лежать в папке /111/
Адреса страниц в записях должны быть относительные.

Спасибо.

в таком варианте, особо еЖли эта "пара сотен страниц" генерится движком, логичнее влепить в них в самом верху (тем же движком) что то вроде:


header( 'HTTP/1 301 Redirect' ); // генерим 301 код возврата
header( 'Location: ...' ); // переадресация

вообщем, руками сработать за mod_rewrite. в PHP больше возможностей автоматизировать генерацию адреса для редиректа (на крайняк, можно тупо файл с массивом адресов сделать и заинклудить). да и нагрузка на сервак, по идее, меньше. хотя, конечно можно и "пару сотен" RewriteRule в .htaccess прописать ;) (если переадресация уникальная и не алгоритмизируется)

ЗЫ: пишу по памяти, "формулировки" уточните....

show must go on !!!...
[umka]
На сайте с 25.05.2008
Offline
456
#3

в директорию "111" кладёте .htaccess

RewriteEngine on
RewriteBase /111/
RewriteRule ^(.*) /222/$1 [R=301,L,QSA]

Это средиректит все страницы из "/111/" на такие же в "/222/".

Если нужно не все, а только определённые 200 страниц, то делаем сответствующие 200 штук:

RewriteRule ^specific_page.html$ /222/specific_page.html [R=301,L,QSA]
Лог в помощь!
den78ru
На сайте с 12.04.2006
Offline
396
#4
DiAksID:
(если переадресация уникальная и не алгоритмизируется)

Именно, имена страниц тоже разные.

[umka], значит надо так:

в директорию "111" кладу .htaccess

В котором -

RewriteEngine on
RewriteBase /111/
RewriteRule ^specific_page.html$ /222/specific_page.html [R=301,L,QSA]
RewriteRule ^specific_page1.html$ /222/specific_page1.html [R=301,L,QSA]
RewriteRule ^specific_page2.html$ /222/specific_page2.html [R=301,L,QSA]

И т.д. сколько нужно. Всё так?

И ещё вопрос - QSA, это чо за зверь? :)

[umka]
На сайте с 25.05.2008
Offline
456
#5
den78ru:
Именно, имена страниц тоже разные.
[umka], значит надо так:

в директорию "111" кладу .htaccess
В котором -

И т.д. сколько нужно. Всё так?

Ну да, всё верно.

den78ru:
И ещё вопрос - QSA, это чо за зверь? :)

Это на тот случай, что если у вас странички принимают какие-нибудь параметры, типа

/111/description.php?item=123

чтобы "?item=123" не терялось.

Если никакие параметры в скрипты не передаются, то "QSA" можно убрать.

DiAksID
На сайте с 02.08.2008
Offline
218
#6
den78ru:
Именно, имена страниц тоже разные ...

в таком случае адназначна лучше редиректить скриптом. двести с лишним RewriteRule в .htaccess напрягут загрузку не слабо...

den78ru
На сайте с 12.04.2006
Offline
396
#7

[umka], ээээ, а если таких записей 4К? Сильно сервак такое напряжёт?

Скажем так, к старой директории 100К обращений в сутки, в час пик это сжирает 10% ЦП сервера. Насколько увеличится нагрузка в %?

[umka]
На сайте с 25.05.2008
Offline
456
#8

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

Парсинг текстовых файлов — это дело очень быстрое.

Ведь, например, интерпретатор php или perl парсят (но не выполняют) скрипт из нескольких тысяч строк очень быстро, за тысячные доли секунды.

DiAksID
На сайте с 02.08.2008
Offline
218
#9
'[umka:
;8848200']Если честно, никогда такими экспериментами не занимался, но по-моему мнению, 4к правил в .htaccess не должны напрячь сервак сильнее, чем если бы выполнялось 4к скриптов, делающих редирект....

вообще то как раз только ОДИН скрипт в 5-10 строк будет делаться на конкретной странице по конкретному адресу (в этом и преимущество), а вот при редиректе через .htaccess Apache будет проверять ВСЮ пачку RewriRule при любом вызове внутри директории, даже если нужное правило стоит первым. и проверять будет куда более универсальными, мощными и медленными скриптами. если передресация укладывается в пару (десятков) RewriRule с регулярками - конечно надо использовать mod_rewrite, если счёт идёт на сотни - скрипт. но это всё моё имхо 😂, а так - дело вкуса, ессеccно...

den78ru
На сайте с 12.04.2006
Offline
396
#10

Да, задачка.

Маску не создать, нет общих признаков.

В папке /111/ имена страниц нумеруются, от 1.html до 4000.html

В папке /222/ имена заданы vot.html tut.html tam.html и т.д.

Ещё момент, не всем страницам /111/ есть замена в /222/, некоторые, немногие. пойдут на морду.

Ещё момент, будет какое-то количество страниц в /111/, которые будут редиректить на одну, скажем 2-3 из /111/ на одну в /222/.

Суть - построение ручного списка необходимо, без него никак. Т.е. надо составлять 4К пар.

А вот в каком виде для скрипта? Ни фига я в этих ваших прогингах не понимаю, вот совсем...

Фсё, ушёл вешаццо. :)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий