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

Модификация 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 Нет, просто незачем :/ Они, сволочи, в рамках одного пакета, придётся ручками ставить... Если вы хотите оставить старые ссылки чтобы поисковики их не потеряли, то может проще тогда взять хук редиректа Ритсу и прописать в нём нужные. Это будет железно работать вне зависимости от реврайта на сервере ;)

 

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

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

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

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

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

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

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

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

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

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

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