2

Возьмет, например, URL-адрес этого вопроса301 перенаправление в StackOverflow. Как это работает?

http://stackoverflow.com/questions/20306229/301-redirect-in-stackoverflow-how-does-it-works 

Если я что-то изменить в заключительной части URL, что делает его, как

http://stackoverflow.com/questions/20306229/301-r 

Я получаю 301 сообщений и я» m перенаправлено ТОЧНО к первому URL, который я написал.

Это reaaally SEO Friendly, ИМХО. Вопрос в том, как они это сделали? Можно ли достичь этого через .htaccess или есть другой способ сделать это? В таком случае?

Я на самом деле не специалист, но это выглядит невозможно достичь с помощью Htaccess ... это больше похоже

  1. Я получаю пост ID из URL
  2. проверить базу данных, чтобы увидеть, если названия равны
  3. Если это не так, я переписать URL и отправить 301 ответ
+0

+1, очень хороший вопрос ... Если инженеры SO дают нам некоторые подсказки. – jacouh

+0

Это довольно просто. См. Мой ответ здесь: http://stackoverflow.com/a/17240067/548225 – anubhava

+0

Возможный дубликат [Есть ли способ переписать этот URL?] (Http://stackoverflow.com/questions/17239887/is-there- а-путь к переписывания-это-гиперссылка) –

ответ

2

Я предполагаю, что они маршрут запроса через страницу, которая проверяет базу данных для сео-заголовка.

RewriteRule ^questions/([0-9]+)/?$ routepage.php?id=$1 [R=301,L] 
RewriteRule ^questions/([0-9]+)/(.*)/?$ routepage.php?id=$1&title=$2 [R=301,L] 

И файл routepage.php

$page = getSeoTitleFromDatabase($_GET['id']); 
if($page != $_GET['page']) { 
    header("HTTP/1.1 301 Moved Permanently"); 
    header("Locations: /questions/" . $_GET['id'] . "/" . $page); 
} 
//Do whatever... 

Я не знаю способа проверки базы данных с .htaccess или mod_rewrite.

Смежные вопросы