На сайте страницы доступны по адресу
site.ru/page
а так же они доступны по адресам
site.ru/?page и
site.ru/?q=page
хочу сделать редирект как в первом варианте что бы не было дублей..
или лучше даже 404 отдавать, так как страницы не были проиндексированы (сайт ещё в разработке)
Используется такой код в index.php:
<?php
$req=mb_strtolower($_SERVER['REQUEST_URI']);
if($_SERVER['REQUEST_URI']!=$req){
header("HTTP/1.1 301 Moved Permanently");
header("Location: ".$req);
die();
}
include('core/init.php');
$params = array();
$query_string = str_replace('q=', '', trim($_SERVER['QUERY_STRING']));
$query_string = urldecode($query_string);
$query_params = explode("/",trim($query_string, '/'));
foreach ($query_params as $query_param) {
$params[] = htmlspecialchars(addslashes($query_param));
};
if ($params[0] == 'home' && count($params) == "1"){
header("HTTP/1.1 302 Moved Permanently");
header("Location: /");
die();
}
if (!$params[0]) $params[0] = "home";
$file = join("/", $params);
$GLOBALS['page'] = $file;
$file = 'pages/' . $file . '.php';
if (file_exists($file)) {
include ($file);
} else if ($params[0] == "feedback" && count($params) == "1") {
include ('core/tpl/feedback.php');
} else {
include ('core/tpl/404.php');
$GLOBALS['page'] = '404';
}
include('core/tpl/template.php');
?>
Такой в htacces
AddDefaultCharset utf-8
RewriteEngine on
RewriteBase /
RewriteRule ^(.+)/$ /$1 [R=301,L]
RewriteCond %{THE_REQUEST} //
RewriteRule .* /$0 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) index.php?q=$1 [L]
как сделать оптимальнее ?