перенаправление htaccess против перенаправления php - PullRequest
10 голосов
/ 04 ноября 2010

Я решил изменить все мои /dyanmic.php?UID=... страницы на /static/Name-From-DB. Я читал, что лучший способ сделать перенаправление, с точки зрения SEO, это реализовать перенаправление 301 .htacess:

(http://www.tamingthebeast.net) - правильный путь - htaccess 301 Редирект: 301 редирект является наиболее эффективный и дружелюбный к паукам / посетителям стратегия вокруг для веб-сайтов, которые размещены на серверах под управлением Apache.

Однако, поскольку у меня есть тысячи страниц, для которых мне нужно использовать перенаправление, кажется неэффективным иметь тысячи записей в файле .htacess:

redirect 301 /dynamid.php?UID=1 http://www.domain.com/static/Name-From-DB
redirect 301 /dynamid.php?UID=2 http://www.domain.com/static/Another-Name-From-DB
and so on...

Поэтому кажется, что эффективный способ сделать это - через страницу PHP, установив заголовок на 301 перенаправление в соответствии с UID:

<?
Header( "HTTP/1.1 301 Moved Permanently" ); 
// Getting the page static name from the DB according to the UID
$result = mysql_query('SELECT Name FROM DB WHERE UID='$_GET["uid"]'');
$row=mysql_fetch_assoc($result);
// Redirect to the new page
Header( "Location: http://www.domain.com/static/" . $row[0] ); 
?> 

У меня вопрос: не окажет ли этот метод негативного влияния на рейтинг моих страниц, учитывая, что в приведенном выше параграфе лучший способ сделать перенаправление - через .htaccess.

Спасибо!

Ответы [ 5 ]

10 голосов
/ 04 ноября 2010

Те же заголовки будут отправляться так же, как и вы.Следовательно, для пользователя (или для поисковой системы) он не будет отличаться, поэтому PHP не окажет негативного влияния на рейтинг страницы по сравнению с .htaccess.

Путь PHP будет немногонемного медленнее, так как каждый раз, когда к странице обращаются, запрос к базе данных запускается.Если у сайта не слишком много трафика на эти страницы, это не должно быть проблемой.

На вашей странице PHP сначала установите соединение с базой данных, потому что если страница не существует, вы захотителибо перенаправить их на другую страницу, либо передать заголовок ошибки 404 вместо заголовка 301.

3 голосов
/ 04 ноября 2010

У меня вопрос: не повлияет ли этот метод негативно на рейтинги моих страниц, учитывая, что в приведенном выше параграфе лучший способ сделать перенаправление - через .htaccess.

Нет , не предоставит , если вы правильно осуществите перенаправление в своем PHP-файле!То есть, вам, вероятно, следует поискать Name (uid) перед тем, как выдаст заголовок 301only выдает это при обнаружении Name - в противном случаеэто 404).

Кроме того, почему бы вам не выполнить запрос к базе данных, вывести перенаправления в формате .htaccess и записать его непосредственно в файл .htaccess?Таким образом, вам придется сделать это только один раз , и вам не придется заботиться о несуществующих uid.


Edit - псевдокод

str ← ""
for each (uid, Name) in database:
    line ← concat("Redirect 301 /dynamid.php?UID=", uid, "http://www.domain.com/static/", Name, <newline>)
    append line to str
copy or write str to .htaccess

Делая это, вы все равно сможете найти свои перенаправления через год (они все в .htaccess) и больше нет необходимости просматриватьв базе данных на каждый запрос "старого стиля".

2 голосов
/ 04 ноября 2010

Нет.Клиент видит одно и то же в обоих случаях: перенаправление 301.Единственной разницей может быть задержка, так как .htaccess обрабатывается до php-файла, и SQL-запрос может добавить некоторую задержку, но я думаю, что задержка незначительно мала.

1 голос
/ 04 ноября 2010

Это не повлияет на ваш рейтинг страниц - Google благодарит, когда вы сообщаете им, что ваши страницы переместились, и что вы не будете поддерживать свой сайт с дублированным содержанием.

Но, как сказано в других ответах, заголовок такой же, как вы отправляете его из PHP или через Apache - вы должны сосредоточиться на том, как минимизировать вашу работу; и сейчас, и в будущем.

Вводя вручную перенаправление в .htaccess, вы фактически получаете больше работы, чем необходимо, по сравнению с динамическим добавлением заголовков через PHP при необходимости.

0 голосов
/ 06 июня 2014

... лучший способ сделать перенаправление через .htaccess ...

Если вы находитесь на общем сервере, это может иметь место, но, в отношении длинного или даже короткого списка файлов, этот файл .htaccess будет искать при каждом доступе к файлу на вашей странице Каждый рисунок, каждый включаемый файл и т. Д.

Мало того, но если у вас несколько уровней, он проверяет файлы .htaccess во всех родительских каталогах. Итак, если ваш файл находится в home / dir1 / dir2 / dir3, он будет проверять наличие файлов .htaccess в каждом каталоге с каждым доступом к файлу:
home / dir1 / dir2 / dir3 /
home / dir1 / dir2 /
home / dir1 /
главная /

Лучше всего держать его как можно более легким. Если вы не используете общий сервер, вам не следует использовать файлы .htaccess вообще. Введите любые директивы в основной файл конфигурации в каталоге и установите для параметра AllowOverride значение «none».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...