htaccess и редирект

V
На сайте с 26.01.2005
Offline
55
793

Добрый день

такая ситуация

раньше на сайте стоял двиг и стать имели адрес следующий

site.ru/articles.php?lng=ru&pg=номер статьи

В связи с переходом на новый движок, файлы статей тепереь имеют вид articlesномерстатьи.php

и хотелось бы эти файлы перенести в папку article (например), чтобы не нагромождать корень сайта.

Посдкажите, что нужно прописать в .htaccess

Психология и HR-менеджмент: должностные инструкции, психологические тесты и др. (http://www.hr-portal.ru/)
mfl
На сайте с 16.10.2006
Offline
134
mfl
#1

Если на страницах используются ссылки href="articles.php?lng=ru&pg=номерстатьи"

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /

RewriteRule ^articles\.php\?lng=ru&pg=([0-9]+) article/articles$1.php [QSA]

</IfModule>

Если на страницах используются ссылки href="articlesномерстатьи.php"

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /

RewriteRule ^articles\.php\?lng=ru&pg=([0-9]+) articles$1.php [R=301,L]

RewriteRule ^articles([0-9]+)\.php article/articles$1.php [QSA]

</IfModule>

V
На сайте с 26.01.2005
Offline
55
#2
mfl:
Если на страницах используются ссылки href="articles.php?lng=ru&pg=номерстатьи"
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^articles\.php\?lng=ru&pg=([0-9]+) article/articles$1.php [QSA]
</IfModule>

Если на страницах используются ссылки href="articlesномерстатьи.php"
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^articles\.php\?lng=ru&pg=([0-9]+) articles$1.php [R=301,L]
RewriteRule ^articles([0-9]+)\.php article/articles$1.php [QSA]
</IfModule>

хм, это штука требует мод реврайт от апача

а если только через htaccess?

Я попробовал, выдает 500 ошибку, в логе perhaps misspelled or defined by a module not included in the server configuration

то есть этого модуля нет на сервере

mfl
На сайте с 16.10.2006
Offline
134
mfl
#3

через .htaccess без мод реврайт никак.

Что за хостинг такой без мод реврайт? Или бесплатный?

Turtle_Fly
На сайте с 20.09.2007
Offline
33
#4

если мод реврайт нельзя использовать то попробуйте в articles.php поставить php редирект на новый адрес статьи.

<?

$art_id=(int)($_GET['pq']);

if(is_int($art_id) && $art_id != 0){

header("Location: ./articles".$art_id.".php", TRUE, 301);

exit;

}

else{

header("HTTP/1.0 404 Not Found");

}

?>

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

отредактировал, была ошибочка

лазерные станки для резки и гравировки, купить в Москве (http://laser911.ru/). изготовление табличек для офиса (http://www.shtampuem.ru/tablichki/).
V
На сайте с 26.01.2005
Offline
55
#5
Turtle_Fly:
если мод реврайт нельзя использовать то попробуйте в articles.php поставить php редирект на новый адрес статьи.

<?
$art_id=(int)($_GET['pq']);
if(is_int($art_id) && $art_id != 0){
header("Location: ./articles".$art_id.".php", TRUE, 301);
exit;
}
else{
header("HTTP/1.0 404 Not Found");
}
?>
здесь 301 редирект, чтоб старые урлы поисковики в своей базе похерили, а индексили тока по новым адресам.



отредактировал, была ошибочка

чего то срабатывает, браузер при попытке открыть старую ссылку - зависает

P.S Я вообще то думал что htacces и mod rewrite разные штуки

строка

ErrorDocument 404 /pages/404.php

работает , (правда адрес в адресной строке не меняется)

по поводу хостинга, да у меня буквально неделю VPS а тут все самому надо включать, наверно просто что не включено

Turtle_Fly
На сайте с 20.09.2007
Offline
33
#6

Смотрите логи и подправьте код, может с путями что-то не то.

На всякий спрошу: а код вставили только в articles.php ?

articles.php надеюсь не должен выводить эти статьи?

по замыслу этот файл только редиректит

Без доп. информации трудно что-либо еще посоветовать.

Turtle_Fly
На сайте с 20.09.2007
Offline
33
#7

------- дубль ------

mfl
На сайте с 16.10.2006
Offline
134
mfl
#8

попробуй

<?php

if (!empty($_GET["lng"])) { $lng=$_GET["lng"]; }

else { $lng=0; }

if (!empty($_GET["pg"])) { $pg=$_GET["pg"]; }

else { $pg=0; }

if ($lng=="ru" && $pg) {

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

@header('Location: http://www.site.ru/articles'.$pg.'.php');

}

else { @header("HTTP/1.0 404 Not Found"); }

?>

V
На сайте с 26.01.2005
Offline
55
#9

работает!

немного переделал, для того чтобы статьи были в каталоге

<?php

if (!empty($_GET["lng"])) { $lng=$_GET["lng"]; }
else { $lng=0; }

if (!empty($_GET["pg"])) { $pg=$_GET["pg"]; }
else { $pg=0; }

if ($lng=="ru" && $pg) {
@header('HTTP/1.1 301 Moved Permanently');
@header('Location: http://www.сайт.ru/articles/article'.$pg.'.php');
}
else { @header("HTTP/1.0 404 Not Found"); }
?>

спасибо большое, пойду статьи доделывать

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