Перейти к контенту

Модификация php to html


Рекомендуемые сообщения

Приветствую!

На форуме версии 2.3.6 стояла модификация php 2 html, которая делала из стандартных php адресов "forum.ru/index.php?showforum=хх", адреса вида "forum.ru/topic1234.html".

После перехода на новую версию форума 3.0 были включены ЧПУ от производителя.

 

Задача:

при переходе на адрес forum.ru/topic1234.html страница должна редиректом(301 код) перекидывать на страницу с новым адресом(т.е. forum.ru/topic/1234-nazvanie-temi/) :D

 

Весь хтаксеес перерыл и скрипты уже в индекс вставляли, ничего не помогает :) - видимо необходимо более глубокое вмешательство

 

Старую модификацию, которая стояла на 2.3, прикрепил к теме на всякий случай.

 

Спасибо!

Готов материально отблагодарить ;)

redirect20b.txt

Ссылка на комментарий
Поделиться на других сайтах

Поставьте MinervaSEO. Она сделает точно такие же ссылки, как у вас были и раньше.

 

 

Так в том то и дело, что мне нужны ссылки какие есть сейчас. Но нужен редирект со старых.

Я даже не прошу делать модификацию, а просто помочь сделать этот д%;№?% 301-ый редирект со старых на новые... :D

Ссылка на комментарий
Поделиться на других сайтах

Ну так а в чем проблема? Внесите эти строки в .htaccess, как было и раньше:

RewriteRule ^index.htm index.php?%{QUERY_STRING}
RewriteRule ^index.html index.php?%{QUERY_STRING}
RewriteRule ^main.html index.php?act=idx&%{QUERY_STRING}
RewriteRule ^ipb.html index.php?%{QUERY_STRING}
RewriteRule ^topic([0-9]+)\.html$ index.php?showtopic=$1&%{QUERY_STRING}
RewriteRule ^topic([0-9]+)s([0-9]+)\.html$ index.php?showtopic=$1&st=$2&%{QUERY_STRING}
RewriteRule ^forum([0-9]+)\.html$ index.php?showforum=$1&%{QUERY_STRING}
RewriteRule ^cat([0-9]+)\.html$ index.php?act=SC&c=$1&%{QUERY_STRING}
RewriteRule ^ptopic([0-9]+)\.html$ index.php?act=Print&client=printer&f=1&t=$1&%{QUERY_STRING}
RewriteRule ^user([0-9]+)\.html$ index.php?showuser=$1&%{QUERY_STRING}

И все проблемы. Если в настройках стоит "Использовать 301 Redirect", форум автоматом их переделывать в новые ЧПУ будет.

Ссылка на комментарий
Поделиться на других сайтах

Ну так а в чем проблема? Внесите эти строки в .htaccess, как было и раньше:

RewriteRule ^index.htm index.php?%{QUERY_STRING}
RewriteRule ^index.html index.php?%{QUERY_STRING}
RewriteRule ^main.html index.php?act=idx&%{QUERY_STRING}
RewriteRule ^ipb.html index.php?%{QUERY_STRING}
RewriteRule ^topic([0-9]+)\.html$ index.php?showtopic=$1&%{QUERY_STRING}
RewriteRule ^topic([0-9]+)s([0-9]+)\.html$ index.php?showtopic=$1&st=$2&%{QUERY_STRING}
RewriteRule ^forum([0-9]+)\.html$ index.php?showforum=$1&%{QUERY_STRING}
RewriteRule ^cat([0-9]+)\.html$ index.php?act=SC&c=$1&%{QUERY_STRING}
RewriteRule ^ptopic([0-9]+)\.html$ index.php?act=Print&client=printer&f=1&t=$1&%{QUERY_STRING}
RewriteRule ^user([0-9]+)\.html$ index.php?showuser=$1&%{QUERY_STRING}

И все проблемы. Если в настройках стоит "Использовать 301 Redirect", форум автоматом их переделывать в новые ЧПУ будет.

 

Не работает. Перекидывает на главную страницу.

В аксесс добавлял после всего, что там есть. Т.е вот так получилось:

php_value default_charset UTF-8
AddDefaultCharset utf-8
AddCharset utf-8 *
<IfModule mod_charset.c>
CharsetSourceEnc utf-8
CharsetDefault utf-8
</IfModule>
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
RewriteRule ^index.htm index.php?%{QUERY_STRING}
RewriteRule ^index.html index.php?%{QUERY_STRING}
RewriteRule ^main.html index.php?act=idx&%{QUERY_STRING}
RewriteRule ^ipb.html index.php?%{QUERY_STRING}
RewriteRule ^topic([0-9]+)\.html$ index.php?showtopic=$1&%{QUERY_STRING}
RewriteRule ^topic([0-9]+)s([0-9]+)\.html$ index.php?showtopic=$1&st=$2&%{QUERY_STRING}
RewriteRule ^forum([0-9]+)\.html$ index.php?showforum=$1&%{QUERY_STRING}
RewriteRule ^cat([0-9]+)\.html$ index.php?act=SC&c=$1&%{QUERY_STRING}
RewriteRule ^ptopic([0-9]+)\.html$ index.php?act=Print&client=printer&f=1&t=$1&%{QUERY_STRING}
RewriteRule ^user([0-9]+)\.html$ index.php?showuser=$1&%{QUERY_STRING}

Ссылка на комментарий
Поделиться на других сайтах

RewriteRule . /index.php [L]

L означает last — последнее правило. Так что новые нужно располагать до него. И скорее всего указать [L] и в них.

Ссылка на комментарий
Поделиться на других сайтах

RewriteRule . /index.php [L]

L означает last — последнее правило. Так что новые нужно располагать до него. И скорее всего указать [L] и в них.

 

Эмм... Попробовал указать перед этим правилом другие. Получилась ошибка 500.

Имеется в виду [L] указывать возле каждого из указанных правил?

Ссылка на комментарий
Поделиться на других сайтах

RewriteRule . /index.php [L]

L означает last — последнее правило. Так что новые нужно располагать до него. И скорее всего указать [L] и в них.

 

Эмм... Попробовал указать перед этим правилом другие. Получилась ошибка 500.

Имеется в виду [L] указывать возле каждого из указанных правил?

Ловите: http://ipb.sannis.ru/examples/save_php2html_rules_in_3.x/

Ссылка на комментарий
Поделиться на других сайтах

RewriteRule . /index.php [L]

L означает last — последнее правило. Так что новые нужно располагать до него. И скорее всего указать [L] и в них.

 

Эмм... Попробовал указать перед этим правилом другие. Получилась ошибка 500.

Имеется в виду [L] указывать возле каждого из указанных правил?

Ловите: http://ipb.sannis.ru/examples/save_php2html_rules_in_3.x/

 

 

Низкий поклон :D

Единственное осталось сделать, чтобы адрес менялся при загрузке старой страницы на новый. Т.е. тот самый 301 редирект.

Пробовал ставить [R=301] и [R=301,L] оостветственно. Но ничего лучше 404 страницы не смог получить...

Ссылка на комментарий
Поделиться на других сайтах

RewriteRule . /index.php [L]

L означает last — последнее правило. Так что новые нужно располагать до него. И скорее всего указать [L] и в них.

 

Эмм... Попробовал указать перед этим правилом другие. Получилась ошибка 500.

Имеется в виду [L] указывать возле каждого из указанных правил?

Ловите: http://ipb.sannis.ru/examples/save_php2html_rules_in_3.x/

Низкий поклон :D

Единственное осталось сделать, чтобы адрес менялся при загрузке старой страницы на новый. Т.е. тот самый 301 редирект.

Пробовал ставить [R=301] и [R=301,L] оостветственно. Но ничего лучше 404 страницы не смог получить...

Странно, у меня работает, подправил под 301-й редирект.

Ссылка на комментарий
Поделиться на других сайтах

Странно, у меня работает, подправил под 301-й редирект.

 

С таким кодом не работает - выдает 404 ошибку.

 

php_value default_charset UTF-8
AddDefaultCharset utf-8
AddCharset utf-8 *
<IfModule mod_rewrite.c>
Options -MultiViews +FollowSymLinks
RewriteEngine On
#RewriteBase /
RewriteRule ^index.htm$ index.php?%{QUERY_STRING} [R=301]
RewriteRule ^index.html$ ./index.php?%{QUERY_STRING} [R=301]
RewriteRule ^main.html$ ./index.php?act=idx&%{QUERY_STRING} [R=301]
RewriteRule ^ipb.html$ ./index.php?%{QUERY_STRING} [R=301]
RewriteRule ^topic([0-9]+)\.html$ index.php?showtopic=$1&%{QUERY_STRING} [R=301]
RewriteRule ^topic([0-9]+)s([0-9]+)\.html$ index.php?showtopic=$1&st=$2&%{QUERY_STRING} [R=301]
RewriteRule ^forum([0-9]+)\.html$ index.php?showforum=$1&%{QUERY_STRING} [R=301]
RewriteRule ^cat([0-9]+)\.html$ index.php?act=SC&c=$1&%{QUERY_STRING} [R=301]
RewriteRule ^ptopic([0-9]+)\.html$ index.php?act=Print&client=printer&f=1&t=$1&%{QUERY_STRING} [R=301]
RewriteRule ^user([0-9]+)\.html$ index.php?showuser=$1&%{QUERY_STRING} [R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>

 

Как только убрать [R=301] отовсюду, то все работает, но сам 301 редирект не действует...

Ссылка на комментарий
Поделиться на других сайтах

Придётся смотреть логи редиректа, а для этого править конфиг виртуального хоста, только там можно RedirectLog и RedirectLogLevel прописать... Можно понадеяться на техподдержку хостинга и спросить у них, что происходит.
Ссылка на комментарий
Поделиться на других сайтах

Придётся смотреть логи редиректа, а для этого править конфиг виртуального хоста, только там можно RedirectLog и RedirectLogLevel прописать... Можно понадеяться на техподдержку хостинга и спросить у них, что происходит.

 

В принципе, могу править конфиг сервера. В каком формате необходимо вставлять в конфиг эти команды?

В поддержку попробую написать конечно. Но немного непонятно как именно сформулировать запрос. Указывать на то, что с самими скриптами проблем нет и существует ли какая-либо проблема в конфигурации сервера для корректной работы редиректов?

Ссылка на комментарий
Поделиться на других сайтах

Внутри раздела <VirtualHost ...> добавьте

	RewriteLog /var/log/apache2/имя.домена-rewrite_log
RewriteLogLevel 3

Путь до лога лучше сделайте по аналогии с путём в директиве ErrorLog. Перезапустите сервер, зайдите по адресу, который выдаёт 404 и напишите что будет в логе. Сравним с моим. Возможно ещё кто-то подтянется, у кого больше опыта в рерайтом.

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

Ссылка на комментарий
Поделиться на других сайтах

Не знаю получилось ли правильо резануть лог, но за несколько минут он у меня стал на пару метров... Вырезал из него все строки где встречается упоминания топик123, на котором собвстенно и проверял работу конфига. http://forum4all.ru/topic123.html

Взял несколько строк выше и ниже на всякий случай, но сверху идут просто аплаи.

62.141.83.84 - - [24/Feb/2010:15:58:32 +0300] [forum4all.ru/sid#8258d8c][rid#82d8f3c/initial/redir#1] (3) [per-dir /home/monah/forum4all.ru/docs/] applying pattern '^ptopic([0-9]+)\.html$' to uri 'index.php'
62.141.83.84 - - [24/Feb/2010:15:58:32 +0300] [forum4all.ru/sid#8258d8c][rid#82d8f3c/initial/redir#1] (3) [per-dir /home/monah/forum4all.ru/docs/] strip per-dir prefix: /home/monah/forum4all.ru/docs/index.php -> index.php
62.141.83.84 - - [24/Feb/2010:15:58:32 +0300] [forum4all.ru/sid#8258d8c][rid#82d8f3c/initial/redir#1] (3) [per-dir /home/monah/forum4all.ru/docs/] applying pattern '^user([0-9]+)\.html$' to uri 'index.php'
62.141.83.84 - - [24/Feb/2010:15:58:32 +0300] [forum4all.ru/sid#8258d8c][rid#82d8f3c/initial/redir#1] (3) [per-dir /home/monah/forum4all.ru/docs/] strip per-dir prefix: /home/monah/forum4all.ru/docs/index.php -> index.php
62.141.83.84 - - [24/Feb/2010:15:58:32 +0300] [forum4all.ru/sid#8258d8c][rid#82d8f3c/initial/redir#1] (3) [per-dir /home/monah/forum4all.ru/docs/] applying pattern '.' to uri 'index.php'
62.141.83.84 - - [24/Feb/2010:15:58:32 +0300] [forum4all.ru/sid#8258d8c][rid#82d8f3c/initial/redir#1] (1) [per-dir /home/monah/forum4all.ru/docs/] pass through /home/monah/forum4all.ru/docs/index.php
62.141.83.84 - - [24/Feb/2010:15:58:33 +0300] [forum4all.ru/sid#8258d8c][rid#8273034/initial] (3) [per-dir /home/monah/forum4all.ru/docs/] strip per-dir prefix: /home/monah/forum4all.ru/docs/topic123.html -> topic123.html
62.141.83.84 - - [24/Feb/2010:15:58:33 +0300] [forum4all.ru/sid#8258d8c][rid#8273034/initial] (3) [per-dir /home/monah/forum4all.ru/docs/] applying pattern '^index.htm$' to uri 'topic123.html'
62.141.83.84 - - [24/Feb/2010:15:58:33 +0300] [forum4all.ru/sid#8258d8c][rid#8273034/initial] (3) [per-dir /home/monah/forum4all.ru/docs/] strip per-dir prefix: /home/monah/forum4all.ru/docs/topic123.html -> topic123.html
62.141.83.84 - - [24/Feb/2010:15:58:33 +0300] [forum4all.ru/sid#8258d8c][rid#8273034/initial] (3) [per-dir /home/monah/forum4all.ru/docs/] applying pattern '^index.html$' to uri 'topic123.html'
62.141.83.84 - - [24/Feb/2010:15:58:33 +0300] [forum4all.ru/sid#8258d8c][rid#8273034/initial] (3) [per-dir /home/monah/forum4all.ru/docs/] strip per-dir prefix: /home/monah/forum4all.ru/docs/topic123.html -> topic123.html
62.141.83.84 - - [24/Feb/2010:15:58:33 +0300] [forum4all.ru/sid#8258d8c][rid#8273034/initial] (3) [per-dir /home/monah/forum4all.ru/docs/] applying pattern '^main.html$' to uri 'topic123.html'
62.141.83.84 - - [24/Feb/2010:15:58:33 +0300] [forum4all.ru/sid#8258d8c][rid#8273034/initial] (3) [per-dir /home/monah/forum4all.ru/docs/] strip per-dir prefix: /home/monah/forum4all.ru/docs/topic123.html -> topic123.html
62.141.83.84 - - [24/Feb/2010:15:58:33 +0300] [forum4all.ru/sid#8258d8c][rid#8273034/initial] (3) [per-dir /home/monah/forum4all.ru/docs/] applying pattern '^ipb.html$' to uri 'topic123.html'
62.141.83.84 - - [24/Feb/2010:15:58:33 +0300] [forum4all.ru/sid#8258d8c][rid#8273034/initial] (3) [per-dir /home/monah/forum4all.ru/docs/] strip per-dir prefix: /home/monah/forum4all.ru/docs/topic123.html -> topic123.html
62.141.83.84 - - [24/Feb/2010:15:58:33 +0300] [forum4all.ru/sid#8258d8c][rid#8273034/initial] (3) [per-dir /home/monah/forum4all.ru/docs/] applying pattern '^topic([0-9]+)\.html$' to uri 'topic123.html'
62.141.83.84 - - [24/Feb/2010:15:58:33 +0300] [forum4all.ru/sid#8258d8c][rid#8273034/initial] (2) [per-dir /home/monah/forum4all.ru/docs/] rewrite topic123.html -> index.php?showtopic=123&
62.141.83.84 - - [24/Feb/2010:15:58:33 +0300] [forum4all.ru/sid#8258d8c][rid#8273034/initial] (3) split uri=index.php?showtopic=123& -> uri=index.php, args=showtopic=123
62.141.83.84 - - [24/Feb/2010:15:58:33 +0300] [forum4all.ru/sid#8258d8c][rid#8273034/initial] (3) [per-dir /home/monah/forum4all.ru/docs/] add per-dir prefix: index.php -> /home/monah/forum4all.ru/docs/index.php
62.141.83.84 - - [24/Feb/2010:15:58:33 +0300] [forum4all.ru/sid#8258d8c][rid#8273034/initial] (2) [per-dir /home/monah/forum4all.ru/docs/] explicitly forcing redirect with http://forum4all.ru/home/monah/forum4all.ru/docs/index.php

Ссылка на комментарий
Поделиться на других сайтах

Приложите .htaccess ещё :D

 

Да, у меня другой лог. Судя по всему у вас плохо определяется куда нужно делать редирект, он у вас идёт на http://forum4all.ru/home/monah/forum4all.ru/docs/index.php, а должен быть внутренним на /home/monah/forum4all.ru/docs/index.php. У меня вместо строчек

[rid#8273034/initial] (3) [per-dir /home/monah/forum4all.ru/docs/] add per-dir prefix: index.php -> /home/monah/forum4all.ru/docs/index.php
[rid#8273034/initial] (2) [per-dir /home/monah/forum4all.ru/docs/] explicitly forcing redirect with http://forum4all.ru/home/monah/forum4all.ru/docs/index.php

идут

[rid#b7b147c8/initial] (3) [perdir /srv/www/vhosts/ipb.sannis.ru/examples/save_php2html_rules_in_3.x/] add per-dir prefix: index.php -> /srv/www/vhosts/ipb.sannis.ru/examples/save_php2html_rules_in_3.x/index.php
[rid#b7b147c8/initial] (2) [perdir /srv/www/vhosts/ipb.sannis.ru/examples/save_php2html_rules_in_3.x/] strip document_root prefix: /srv/www/vhosts/ipb.sannis.ru/examples/save_php2html_rules_in_3.x/index.php -> /examples/save_php2html_rules_in_3.x/index.php
[rid#b7b147c8/initial] (1) [perdir /srv/www/vhosts/ipb.sannis.ru/examples/save_php2html_rules_in_3.x/] internal redirect with /examples/save_php2html_rules_in_3.x/index.php [INTERNAL REDIRECT]

 

И кстати, уже давно устарело: RewriteRule ^cat([0-9]+)\.html$ index.php?act=SC&c=$1&%{QUERY_STRING} [R=301]

Ссылка на комментарий
Поделиться на других сайтах

Так правила к аксессу прописывал исходя из выложенного Вами файлика, вроде бы...

А где тогда хорошо определить куда должен идти редирект? )

php_value default_charset UTF-8
AddDefaultCharset utf-8
AddCharset utf-8 *
<IfModule mod_rewrite.c>
Options -MultiViews +FollowSymLinks
RewriteEngine On
#RewriteBase /
RewriteRule ^index.htm$ index.php?%{QUERY_STRING} [R=301]
RewriteRule ^index.html$ ./index.php?%{QUERY_STRING} [R=301]
RewriteRule ^main.html$ ./index.php?act=idx&%{QUERY_STRING} [R=301]
RewriteRule ^ipb.html$ ./index.php?%{QUERY_STRING} [R=301]
RewriteRule ^topic([0-9]+)\.html$ index.php?showtopic=$1&%{QUERY_STRING} [R=301]
RewriteRule ^topic([0-9]+)s([0-9]+)\.html$ index.php?showtopic=$1&st=$2&%{QUERY_STRING} [R=301]
RewriteRule ^forum([0-9]+)\.html$ index.php?showforum=$1&%{QUERY_STRING} [R=301]
RewriteRule ^cat([0-9]+)\.html$ index.php?act=SC&c=$1&%{QUERY_STRING} [R=301]
RewriteRule ^ptopic([0-9]+)\.html$ index.php?act=Print&client=printer&f=1&t=$1&%{QUERY_STRING} [R=301]
RewriteRule ^user([0-9]+)\.html$ index.php?showuser=$1&%{QUERY_STRING} [R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>

Изменено пользователем Monah
Ссылка на комментарий
Поделиться на других сайтах

Можно попробовать раскомментировать RewriteBase /

Точнее не могу сказать, нужно ставить 1.3 и проверять...

Ссылка на комментарий
Поделиться на других сайтах

Да, с раскомментированием не помогло =( Эффект тот же.

А "[R=301]" никакими другими средствами не заменяется? Проблема именно в 301-ом редиректе...

Ссылка на комментарий
Поделиться на других сайтах

[R] я так понял у вас не сработает.

 

Мне приходит в голов только хак из серии сделать символическую ссылку из http://forum4all.ru/home/monah/forum4all.ru/docs/index.php в http://forum4all.ru/index.php, но это чревато. Не делайте так.

Ссылка на комментарий
Поделиться на других сайтах

[R] я так понял у вас не сработает.

 

Мне приходит в голов только хак из серии сделать символическую ссылку из http://forum4all.ru/home/monah/forum4all.ru/docs/index.php в http://forum4all.ru/index.php, но это чревато. Не делайте так.

 

Не делал так. Слово "Чревато" пугает.

А Вы 1.3 случаем не собираетесь ставить? :D

Ссылка на комментарий
Поделиться на других сайтах

А Вы 1.3 случаем не собираетесь ставить?

Вы хотели сказать 3.1? Нет, не хочется платить за продление. Хотя придётся, есть зачем. Только тссс (:

 

Туплю, вы же про Апач :D Нет, просто незачем :/ Они, сволочи, в рамках одного пакета, придётся ручками ставить... Если вы хотите оставить старые ссылки чтобы поисковики их не потеряли, то может проще тогда взять хук редиректа Ритсу и прописать в нём нужные. Это будет железно работать вне зависимости от реврайта на сервере ;)

Ссылка на комментарий
Поделиться на других сайтах

А Вы 1.3 случаем не собираетесь ставить?

Вы хотели сказать 3.1? Нет, не хочется платить за продление. Хотя придётся, есть зачем. Только тссс (:

 

Туплю, вы же про Апач :D Нет, просто незачем :/ Они, сволочи, в рамках одного пакета, придётся ручками ставить... Если вы хотите оставить старые ссылки чтобы поисковики их не потеряли, то может проще тогда взять хук редиректа Ритсу и прописать в нём нужные. Это будет железно работать вне зависимости от реврайта на сервере ;)

 

Хук установил, работает :)

Каким образом прописать необходимые адреса? Надеюсь, здесь не имееется в виду прописывать каждую ссылку в отдельности =) А все-таки прописать каким-то из правил?

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.