Помогите с 301 редиректом

12
genjnat
На сайте с 08.10.2008
Offline
230
1204

Доброго времени суток

Есть сайт, на Joomla, его запустили без mod_rewrite и суффикса к URL (.html).

т.е., на данный момент URL выглядит так http://мой-сайт.ru/index.php/news/15-companynews/81-newwed16082011

Стоит задача убрать из URL index.php и добавить суффикс .html, как это сделать понятно, но сайт уже в индексе, и на некоторые страницы закупались ссылки, поэтому нужно настроить редирект, с

http://мой-сайт.ru/index.php/news/15-companynews/81-newwed16082011

на

http://мой-сайт.ru/news/15-companynews/81-newwed16082011.html

Как это сделать постранично, тоже понятно, но муторно, сайт большой.

Может кто подскажет, единое правило для всего сайта?

Заранее спасибо.

ПС

Если суфикс .html делает задачу невыполнимой - обойдемся без него

NW
На сайте с 08.12.2011
Offline
77
#1
genjnat:
Доброго времени суток
Есть сайт, на Joomla, его запустили без mod_rewrite и суффикса к URL (.html).
т.е., на данный момент URL выглядит так http://мой-сайт.ru/index.php/news/15-companynews/81-newwed16082011

Стоит задача убрать из URL index.php и добавить суффикс .html, как это сделать понятно, но сайт уже в индексе, и на некоторые страницы закупались ссылки, поэтому нужно настроить редирект, с
http://мой-сайт.ru/index.php/news/15-companynews/81-newwed16082011
на
http://мой-сайт.ru/news/15-companynews/81-newwed16082011.html

Как это сделать постранично, тоже понятно, но муторно, сайт большой.
Может кто подскажет, единое правило для всего сайта?
Заранее спасибо.

ПС
Если суфикс .html делает задачу невыполнимой - обойдемся без него

Сначала создать или переименовать файл .htaaccess управляющий и дающий команды интерпретатору php и другим обработчикам

В настройках joomla сайт-->общие настройки--> выбрать Перенаправление URL --> ДА --> сохранить

то, что должно быть в файле .htaccess ниже

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]

RewriteCond %{QUERY_STRING} (|%3E) [NC,OR]

RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]

RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})

RewriteRule .* index.php [F]

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

RewriteCond %{REQUEST_URI} !^/index\.php

RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw))$ [NC]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule .* index.php [L]

и обязательно после выше проделанных изменений просмотрите и протестите весь сайт на наличие старых ссылок содержащих index.php теперь можно его убрать, а ссылки так же будут работать.

Анкета для новичков и профессионалов, вопросы могут быть разными!
siv1987
На сайте с 02.04.2009
Offline
427
#2
genjnat:
http://мой-сайт.ru/index.php/news/15-companynews/81-newwed16082011
на
http://мой-сайт.ru/news/15-companynews/81-newwed16082011.html

Чисто на мод_реврайт выглядеть это будет так

RewriteRule ^index\.php/(.+)(?<!\.html)$ /$1.html [R=301,L]

добавить после RewriteEngine On

genjnat
На сайте с 08.10.2008
Offline
230
#3

niko-web - спасибо, сейчас попробую ваш вариант, если не выйдет, то сделаю как

siv1987 советует

NW
На сайте с 08.12.2011
Offline
77
#4
genjnat:
niko-web - спасибо, сейчас попробую ваш вариант, если не выйдет, то сделаю как
siv1987 советует

я вам дал рабочий и проверенный вариант !

magistrat
На сайте с 02.06.2012
Offline
43
#5
genjnat:
Доброго времени суток

Стоит задача убрать из URL index.php и добавить суффикс .html, как это сделать понятно, но сайт уже в индексе, и на некоторые страницы закупались ссылки, поэтому нужно настроить редирект, с
http://мой-сайт.ru/index.php/news/15-companynews/81-newwed16082011
на
http://мой-сайт.ru/news/15-companynews/81-newwed16082011.html

Как это сделать постранично, тоже понятно, но муторно, сайт большой.
Может кто подскажет, единое правило для всего сайта?
Заранее спасибо.

ПС
Если суфикс .html делает задачу невыполнимой - обойдемся без него

Не совсем понял, единое правило для редиректа

с

http://мой-сайт.ru/index.php/news/15-companynews/81-newwed16082011

на

http://мой-сайт.ru/news/15-companynews/81-newwed16082011.html

если так, то по данному примеру

будет как то так...

$URL_now='http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; # текущий урл

$URL_redirect=str_replace("index.php", "", $URL_now).".html"; # выкинул index.php и прикрутил хтмл

header('HTTP/1.1 301 Moved Permanently');

header("Location: "$URL_redirect);

(при правильно настроеном .htaccess)

genjnat
На сайте с 08.10.2008
Offline
230
#6

к сожалению в обоих случаях сайт ложится

niko-web:
я вам дал рабочий и проверенный вариант !

Еще раз благодарю, но - лежит

magistrat тоже спасибо, но не так меня поняли

выкинуть index.php и добавить .html, можно средствами джумлы.

нужно после этих действий переклеить все страницы на новые URL, 301 редиректом

NW
На сайте с 08.12.2011
Offline
77
#7
genjnat:
к сожалению в обоих случаях сайт ложится

Еще раз благодарю, но - лежит
magistrat сейчас ваш попробую

а вы htaccess.txt переименовали на .htaccess ?

genjnat
На сайте с 08.10.2008
Offline
230
#8

конечно...

там еще и с настройками сервера неизвестно что.

Шаред и на можордоме, а у них в ТП писать бесполезно, раньше чем в понедельник, не ответят.

NW
На сайте с 08.12.2011
Offline
77
#9
genjnat:
конечно...
там еще и с настройками сервера неизвестно что.
Шаред и на можордоме, а у них в ТП писать бесполезно, раньше чем в понедельник, не ответят.

может сервер не поддерживаемый mod_rewrite?

genjnat
На сайте с 08.10.2008
Offline
230
#10
niko-web:
может сервер не поддерживаемый mod_rewrite?

Понятия не имею, у меня только ФТП доступ.

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

Простой, вроде

Redirect 301 /старая-страница _http://новая-страница

работает

А ваш ставлю - 500

12

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