|
|
|
| Всем привет!
Нужна помощь в создании ошибки 404
Создать саму страницу не проблема, дело в том, что по таким ссылкам 404 не вылетает, а отдает код 200 что подскажите? как быть? )
test.ru/catalog/jsdfhsdjifhsduif sd
test.ru/catalog/jsdfhsdjifhsduifsd/343242
test.ru/catalog.php
test.ru/catalog3123
ErrorDocument 404 /404.php
AddDefaultCharset utf-8
php_value upload_max_filesize 10M
php_value post_max_size 12M
RewriteEngine on
RewriteRule .htaccess - [F]
RewriteBase /
Options +FollowSymlinks
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^shop/([a-z0-9\-_/]+)/?$ shop.php?hpu=$1 [L]
RewriteRule ^([a-z\-/]+)/?$ index.php?hpu=$1 [L]
|
| |
|
|
|
|
|
|
|
для: Habl
(21.08.2013 в 11:06)
| | Для начала, я б, таки сделал страницу и проверил, попадаем ли туда на самом деле.
Если не попадаем, значит ошибка в RewriteEngine on.
http://ru.wikipedia.org/wiki/%CE%F8%E8%E1%EA%E0_403#200 | |
|
|
|
|
|
|
|
для: Zezst
(22.08.2013 в 00:36)
| | Вы имеете ввиду страницу 404? Если да, то она сделана | |
|
|
|
|
|
|
|
для: Habl
(22.08.2013 в 08:59)
| | и...
Попадаете на нее?
Если нет, то вам сюда
http://www.htaccess.net.ru/ | |
|
|
|
|
|
|
|
для: Zezst
(22.08.2013 в 13:00)
| | Я попадаю на 404 например по такому url
http://www.test-metal.ru/shop/fdfs%5D
а вот по такому уже нет
http://www.test-metal.ru/shop/jsdfsjfsdfhjsdhfjkshfjfhsdjkf
по такому url он просто открывает мне страничку, но контент не выводит ни какой
получается очевидный дубль... | |
|
|
|
|
|
|
|
для: Habl
(22.08.2013 в 13:37)
| | т.е. счас вас выкидывает либо в shop.php
либо в index.php ?
вот так напишите в shop.php, первой строчкой
echo $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
exit;
|
просто что бы быть уверенным что мы точно попадаем в shop, и если да то тут уже думайте как это исполльзовать, либо таки возитесь с настройками mod_rewrite | |
|
|
|
|
|
|
|
для: Zezst
(22.08.2013 в 13:45)
| | Выкидывает меня постоянно на shop, только контент не выводится, т.к. по такому url нечего выводить | |
|
|
|
|
|
|
|
для: Habl
(22.08.2013 в 13:54)
| | а вы в shop.php вписали , то что я вас просил
если оно не выводит jsdfsjfsdfhjsdhfjkshfjfhsdjkf вот такое
значит в shop.php вы все таки не попадаете
З.Ы. как доберусь домой попробую ваш .htaccess
посмотрю что он делает | |
|
|
|
|
|
|
|
для: Habl
(22.08.2013 в 13:54)
| | Собственно проверил я ваш .htaccess
Все нормально работает.
Строка
RewriteRule ^shop/([a-z0-9\-_/]+)/?$ shop.php?hpu=$1 [L]
|
В первом случае, когда вы делаете запрос
http://www.test-metal.ru/shop/fdfs %5D
|
выделенный символ не попадает в правило определенное вами и вас отправляет на ошибку 404
Во втором случае
http://www.test-metal.ru/shop/jsdfsjfsdfhjsdhfjkshfjfhsdjkf
|
все символы попадают в маску и вас кидает на файл shop.php
Соответственно, если вам надо, сделать так, что бы и во втором случае кидало на страницу с ошибкой 404, то вам нужно это отлавливать непосредственно в файле shop.php
Как то так.
Если не секретная информация, покажите файл shop.php. Или хотя бы начало. | |
|
|
|
|
|
|
|
для: Habl
(22.08.2013 в 13:54)
| | У вас в правилах, после shop.php, разрешенно использовать :
- маленькие буквы
- цифры
- ?
- знак минус
- _
- /
Так, как то.
Естественно, что попадает под правило, то ему следует. Что не попало, того на 404. | |
|
|
|
|
|
|
|
для: Zezst
(22.08.2013 в 17:38)
| |
<?php
//echo $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
//exit;
include ("block/db.php");
header('Content-type: text/html; charset=utf-8');
$result = mysql_query("SELECT id,cat_hpu,meta_d,meta_k FROM categoryes WHERE cat_hpu='$_GET[cat_hpu]'");
$myrow = mysql_fetch_array($result);
?>
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta name="keywords" content="<?php echo $myrow['meta_k']; ?>" />
<meta name="description" content="<?php echo $myrow['meta_d']; ?>" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="icon" href="/favicon.ico" type="image/x-icon" />
<link rel="stylesheet" href="http://www.test-metal.ru/style.css"/>
</head>
<body>
<?php include ("block/header_fon.php"); ?>
<div id="container">
<?php
include ("block/header.php");
include ("block/contact.php");
include ("block/top_menu.php");
include ("block/right_menu.php");
?>
<table align='center' border='0' cellpadding='1' cellspacing='1' style='width:806px'>
<tbody>
<tr>
<?php
if ($_GET['id']){
$result = mysql_query("SELECT * FROM products WHERE id='$_GET[id]'");
$myrow = mysql_fetch_assoc($result);
//print_r($myrow);
//echo "$myrow[text]";
print <<<HERE
<div id="content">
$myrow[text]
</div>
HERE;
}
elseif (isset($_GET['hpu'])){
$result = mysql_query("SELECT * FROM products WHERE hpu='$_GET[hpu]'");
$myrow = mysql_fetch_assoc($result);
print_r($myrow);
//echo "$myrow[text]";
if (mysql_num_rows($result)> 0) {
echo "<div style='text-align:centre;'>";
echo "<table align='center' cellspacing='0' cellpadding='0'>";
echo "<tr>";
$i=0;
while ($myrow = mysql_fetch_assoc ($result))
{
echo ($i % 3 == 0 ? "</tr><tr>" : "");
echo "<td style='padding:16px;'>
<p><img alt='$myrow[title]' src='$myrow[img]'/><br/>
<a href='/shop.php?hpu=$myrow[hpu]&id=$myrow[id]'>$myrow[title]</a><br/>
$myrow[settings]<br/>
$myrow[price] рублей за 1 метр</p>
</td>";
++$i;
}
echo "</tr>";
echo " </table>";
echo "</div>";
}
else {echo "<p style='font-size:19px; font-wieght:bold; color:red;'>Данного товара пока что нет!</p>";}
}
?>
</tr>
</tbody>
</table>
</div>
</div>
<div id="rasporka"></div>
<?php include ("block/footer.php");?>
</body>
</html>
]
|
| |
|
|
|
|
|
|
|
для: Habl
(23.08.2013 в 09:55)
| | А если вы просто заходите на shop.php, что происходит?
По заданному в .htaccess правилу, все, что идет по shop/, превращается в $_GET запрос:
if ($_GET['id']){
$result = mysql_query("SELECT * FROM products WHERE id='$_GET[id]'");
|
С той абракадаброй, что вы прописываете, из базы ничего не возвращается, этого в базе просто нет. Соответственно, самый простой вариант - проверить $result, и, если там пусто или ошибка, перекинуть юзера на 404.php. | |
|
|
|
|
|
|
|
для: Habl
(23.08.2013 в 09:55)
| | То есть из ранее сказанного вы учли только одно - "ладно, пусть будет mysql_fetch_assoc"? | |
|
|
|
|
|
|
|
для: Habl
(21.08.2013 в 11:06)
| | в начале 404.php напишите:
<?php
header('HTTP/1.1 404 Not Found');
| и будет 404 | |
|
|
|