В общемЭ, вроде логично, но ошибку не могу понять (именно понять)
Есть такой выводю Метод
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 написал(а):
добавь
а
www.sitename.ru/blog&id=3 - он не может обработать, так как не видит в строке GET запроса (?)
Но будет распознавать
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 написал(а):
Спустя 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
вот такие твои нормальные ссылки должны быть, а не
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 ошибку. Ладно... мож забить на это дело? Как думаете, там вариантов может быть масса.
Ага! Если 2 то..... не поверите - все равно перекидывает на 404 ошибку. Ладно... мож забить на это дело? Как думаете, там вариантов может быть масса.