Всем привет! Имеется задача по переезду сайта (старый сайт на джумле, новый на processwire). Нужно реализовать 301 редиректы всех новостей на новый адрес: Все новости (порядка 10к шт) имеющие вид:
oldsite.ru/index.php/novost.html ; old.site.ru/index.php/novost2.html и.т.д
Нужно переадресовать на
newsite.ru/news/1/novost ; newsite.ru/news/1/novost2 и.т.д
т.е нужно вырезать из старых урлов который создала джумла - index.php и перенести все что после index.php на новый сайт в папку. В конце необходимо удалить .html
Перерыл весь инет, нужных директив htaccess составить не могу
Не могу реализовать 301 редирект в htaccess с удалением символов
(Ответов: 6, Просмотров: 723)
- 16.02.2018 18:50
- Регистрация: 06.04.2016
- Сообщений: 34
- Репутация: 3
- 17.02.2018 09:36
- Регистрация: 06.04.2016
- Сообщений: 34
- Репутация: 3
Попробовал составить:
RewriteRule ^/index\.php/(.*) http://newsite.ru/news/ [R=301,L]
и
RewriteRule ^/index\.php/$ http://newsite.ru/news/ [R=301,L]
вроде по правилам собрал верно, но по факту не редиректит - 17.02.2018 10:24
Можно и через htaccess заморочился, а можно и через PHP в точке входа - что угодно и как угодно, изящно и элегантно.
- 17.02.2018 12:34
- Регистрация: 06.04.2016
- Сообщений: 34
- Репутация: 3
- 18.02.2018 23:06
- Регистрация: 06.04.2016
- Сообщений: 34
- Репутация: 3
RewriteCond %{THE_REQUEST} ^.*/index\.php(.*)$
RewriteRule ^(.*)index.php$ http://%{HTTP_HOST}/$1 [R=301,L]
Должно работать но чет хз не хочет
---------- Сообщение добавлено 00:52 ---------- Предыдущее 00:47 ----------
Ок пасоны упрощу задачу - а то сам с собой уже 3 дня обсуждаю
Есть URL: oldsite.ru/index.php/novost.html нужно все что после index.php вырезать и передать на новый сайт. получится: newsite.ru/news/1/novost.html
мозг уже сломал, должно работать а не хочет.
p.s просто редирект урла целиком делаю без проблем. Может точно PHP применить?
---------- Сообщение добавлено 01:06 ---------- Предыдущее 00:52 ----------
Вопрос. Кто знает как из урла с помощью PHP вырезать символы после последнего слеша и передать на новый сайт?
/novost.html //novost.html вырезаем (последняя часть динамическая - строго буквы, цифры и тире)Последний раз редактировалось fortunatocat; 18.02.2018 в 22:55.
- 20.02.2018 16:48
- Регистрация: 06.04.2016
- Сообщений: 34
- Репутация: 3
Решено! Может кому понадобится:
PHP код:#Это мы размещаем в htaccess старого домена - вырезает index.php из середины URL
RewriteEngine On
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule (.*?)index\.php/*(.*) http://newsite.ru/$1$2 [R=301,L]
PHP код:#Это мы размещаем на новом домене в файле htaccess - удаляет .html в конце URL
RewriteEngine on
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+)\.html\ HTTP
RewriteRule ^([^.]+)\.html$ http://newsite.ru/$1 [R=301,L]
RewriteCond %{REQUEST_URI} !(\.[^./]+)$
RewriteCond %{REQUEST_fileNAME} !-d
RewriteCond %{REQUEST_fileNAME} !-f
RewriteRule (.*) /$1.html [L]
- 28.05.2018 18:23
Постоянно пишу: внешний редирект должен быть раньше внутреннего. Но с завидной регулярностью появляются вопросы «почему». Да потому, что внешний редирект говорит браузеру: иди на такой-то адрес. А внутренний редирект сперва выполняется, а до внешнего дело и не доходит.
Так и в «решении». Если правило подходит под редирект браузеру:
далее ничего не выполняется (флаг L).
Тэги топика:
Похожие темы
Темы | Раздел | Ответов | Последний пост |
---|---|---|---|
Как сделать редирект .htaccess ? | Web программирование | 4 | 29.03.2017 15:06 |
[HELP]Редирект htaccess и GET параметр | Web программирование | 2 | 22.03.2014 08:36 |
Как сделать 301 редирект в .htaccess | Вопросы от новичков | 8 | 01.11.2012 19:46 |
Редирект в .htaccess | Web программирование | 6 | 21.06.2012 21:56 |
.htaccess редирект | Прочее | 9 | 11.09.2009 21:48 |