[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ФОрмирование ссылок.
m4a1fox
Объясните глупому, почему? :)
В общемЭ, вроде логично, но ошибку не могу понять (именно понять)
Есть такой выводю Метод

public function ShowAllBlogOnPage() {
$i = 3;
$name = '<table border="0" cellpadding="0" cellspacing="0" border="0" id="blog" align="center">
<tr valign="top">'
;
$sql = "SELECT * FROM `".$this->getLink()."` ORDER BY `id` DESC";
$res = connectDb::sql($sql);
if(mysql_num_rows($res) > 0) {
$c = 0;
while($row = mysql_fetch_assoc($res)) {
$c++;
$name .= '<td width="300px"><img src="./file/'.$row['img'].'"><br />';
$name .= '<div id="date">0'.$row['id'].'<br />
<span style="font-size: 8px;">
'
.$this->cor_date($row['date']).'
</span>
</div>
<a href="./'
.$this->getLink().''.$this->replaceUrl("&id=").''.$row['id'].'">
<lable id="blog_title">'
.$row['title'].'</lable>
</a>
<br />'
;
$name .= ''.$this->CutText($row['text']).'</td>';
if($c == $i){
$name .= '</tr>';
}
}

$name .= '</tr></table>';
}else{
return false;
}
return $name;
}

Собственно внимание вот на эту строчку

<a href="./'.$this->getLink().''.$this->replaceUrl("&id=").''.$row['id'].'">

Метод

$this->replaceUrl("&id=")

public function replaceUrl($data){
return str_replace("&id=", "/", $data);
}
.

Есть еще вот такой метод

class linkShow {

private static $GET = array('main' => 'one',
'about' => 'two',
'blog' => 'three',
'place' => 'four',
'works' => 'five',
'log' => 'log',
'before'=> 'six');

private static $get;

public $act;

public function __construct(){
self::$get = isset($_GET['route'])?$_GET['route']:NULL;
return self::$get;
}

public function PageLink() {
if($this->__construct() !== NULL){
if(in_array($this->__construct(), array_keys(self::$GET))) {
return self::$GET[$this->__construct()];
} else {
header('Location: '.M4A1_HOST.'/404.html');
exit();
}
}
else{
if(!defined('M4A1_KEY_ADMIN')){
return 'one';
}else{
return 'six';
}
}
}


public function PageVid($str)
{
if($this->PageLink() == $str)
echo 'id="active_menu"';
}
}


Он парсит $_GET['route'] и если его нет в массиве $GET то перекидывает на 404 страницу.

Мои ссылки сейчас выглядят так

www.sitename.ru/blog/3 - ошибка (перекидывает на 404 страницу)

а если так

www.sitename.ru/blog&id=3 - то все нормально


Вопрос - почему? :) Если запутанно - уточняйте. Просто охота разобраться.

Ах да, еще один интересный момент
Если так метод так

public function replaceUrl($data){
return str_replace("id=", "", $data);
}

а ссылку так

<a href="./'.$this->getLink().''.$this->replaceUrl("&id=").''.$row['id'].'">


То ее вид уже принимает такое значение

http://www.csi.in.ua/blog&3 - нет ошибки


.htaccess

RewriteRule ^(.*)$ index.php?route=$1 [L]




Спустя 31 минута, 59 секунд (6.09.2011 - 12:29) Игорь_Vasinsky написал(а):
Цитата
www.sitename.ru/blog&id=3 - то все нормально

ну вообще - первый GET параметр передаётся через ?
может он и поетому не принимает...

Спустя 4 минуты, 47 секунд (6.09.2011 - 12:33) m4a1fox написал(а):
Игорь_Vasinsky
Цитата
ну вообще - первый GET параметр передаётся через ?

Так первый уже есть... в .htaccess передается.
То есть по сути ссылка так выглядит
www.mysitename.ru?route=blog&id=3
Но! в .htaccess есть такое

RewriteRule ^(.*)$ index.php?route=$1 [L]

Поэтому так и выглядит.

Спустя 18 минут, 27 секунд (6.09.2011 - 12:52) Игорь_Vasinsky написал(а):
добавь
RewriteRule ^([^/]*)/([^/]*)$ /?route=$1&id=$2 [L]


а
www.sitename.ru/blog&id=3 - он не может обработать, так как не видит в строке GET запроса (?)

Но будет распознавать
Цитата
www.mysitename.ru?route=blog&id=3

Спустя 1 минута, 10 секунд (6.09.2011 - 12:53) m4a1fox написал(а):
Игорь_Vasinsky
Ээээ.... добавить или заменить?

Спустя 1 минута, 32 секунды (6.09.2011 - 12:55) Игорь_Vasinsky написал(а):
Попробуй и так и так. Проверь.

Спустя 2 минуты, 44 секунды (6.09.2011 - 12:57) m4a1fox написал(а):
Игорь_Vasinsky
Цитата

RewriteRule ^([^/]*)/([^/]*)$ /?route=$1&id=$2 [L]

Так даже сразу на 404 перекидывает, то есть даже если на ссылку не нажимать, то все равно сразу же ошибка!

Спустя 3 минуты (6.09.2011 - 13:00) Игорь_Vasinsky написал(а):
у тя ссылка должна быть
www.mysitename.ru/blog/3


я же показывал
Mod Rewrite Generator

Спустя 3 часа, 6 минут, 5 секунд (6.09.2011 - 16:06) m4a1fox написал(а):
Игорь_Vasinsky
Цитата
я же показывал
Mod Rewrite Generator

Дык не получается так.... пробовал уже. Выкидывает на 404 ошибку!

Спустя 12 минут, 29 секунд (6.09.2011 - 16:19) Игорь_Vasinsky написал(а):
У тя должно быть 2 правила

1. www.sitename.ru/index.php&router=blog
2. www.sitename.ru/index.php?router=blog&id=3

вот такие твои нормальные ссылки должны быть, а не

Цитата
www.sitename.ru/blog&id=3

эта ссылка уже подверглась ЧПУ.

Спустя 8 минут, 5 секунд (6.09.2011 - 16:27) m4a1fox написал(а):
Игорь_Vasinsky
Ага! Если 2 то..... не поверите - все равно перекидывает на 404 ошибку. Ладно... мож забить на это дело? Как думаете, там вариантов может быть масса.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.