mediatime, у всех прошу прощения за дезу - действительно, заблуждался. :)
Все по плюсу за поправку.
Лучше сделать. Не из-за аргументов начальства (они не совсем соответствуют действительности), а из-за ссылок, которые будут естественным образом появляться. Пусть лучше они все ведут на один сайт, чем на два (лучше быть на 5 месте, чем на 11 и 15ом).
Если уже есть ссылки, ведущие на "неглавное" зеркало, сначала сделайте robots.txt с директивой Host: и дождитесь склеивания зеркалов (у Гугла это происходит, по моим наблюдениям, довольно медленно).
i73, можно сделать так:
if (substr($link, 0, 4) == 'www.') {
$link = substr($link, 4, strlen($link) - 4);
}
А потом уже ваш запрос к БД как есть.
Поиск повторения домена будет работать, не зависимо от того, ввел ли пользователь www - сверка будет по-любому проводиться без www.
Можно и так - без разницы. Код даже проще получается. Но придется, помимо поля domen иметь еще поле, скажем URL, где будет храниться адрес сайта так, как его ввел пользователь. Оно и должно использоваться при сборке ссылки. А domen - только для проверки повторения.
Таким образом, проверка остается, а снимается ограничение на www и внутренние разделы сайта.
i73, каждый раз, когда при добавлении новой ссылки проверяется наличие в базе ссылки с таким же доменом, у вас, например, делается
SELECT * FROM links WHERE URL LIKE 'http://{$host}/%'
Что вам мешает подготовить 2 домена (с www и без) в переменных и сделать:
SELECT * FROM links WHERE URL LIKE 'http://{$host_www}/%' OR URL LIKE 'http://{$host_nowww}/%'
? Вы съэкономили себе минуту на разработке движка ценой некоторых проблем для пользователей. По-моему, оно того не стоило.
Вот еще в помощь:
<?
$url = parse_url($_POST['url']);
if (strtolower(substr($url['host'], 0, 4)) == 'www.') {
$host_www = $url['host'];
$host_nowww = substr($url['host'], 4, strlen($url['host']) - 4);
} else {
$host_nowww = $url['host'];
$host_www = 'www.' . $url['host'];
?>
Ушло 30 секунд :)
smscat, было бы интересно узнать ваши аргументы в пользу того минуса. :)
Насчет дублей: с таким .htaccess при каждом запросе *.html будет отдаваться файл *.shtml. О существовании *.shtml файлов ПС не узнают, поскольку на них НЕТ ни одной ссылки (если, разумеется, их не ставить).
Насчет передачи PR по 301 редиректу: ОН НЕ ПЕРЕДАЕТСЯ!
Он далек от совершенства. Дубли могут долго висеть в выдаче как две разные страницы...
smscat, Вы дважды заблуждаетесь! :)
Не будет.
Не передадут
Sergey T, если стоит задача увеличить PR морды, лучше продумайте перелинковку страниц сайта: каждая страница должна ссылаться на главную, а между внутренние должны быть не слишком обильно перелинкованы. В таком случае, PR внутренних успадет, а морды поднимется.
А вот сокращение количества страниц, имхо, либо уменьшит PR главной, либо ничего не изменит.
Vitaly1973, разумеется, можно. В чем-то это будет даже правильнее: пользователь будет приходить из серпов прямо на ту страницу, которая ему нужна.
Однако, продвигать внутренние обычно несколько сложнее, поскольку нельзя охватить несколько ключевиков одной ссылкой, да и статический вес внутренней страницы обычно ниже. Плюс не все каталоги принимают ссылки на внутренние (большинство все-таки принимает).
smscat, это не сбережет ссылки, с точки зрения SEO. Хотя если есть ссылки, дающие траффик, они будут работать.
Есть еще такой вариант:
------------
RewriteEngine On
RewriteRule (.*)\.htm$ $1.shtml