.htaccess - нужно 301 URL со специальными символами - PullRequest
0 голосов
/ 05 декабря 2010

У меня есть длинный URL с устаревшего веб-сайта, который мне нужен для 301, например: domain.com/web/vehicle/655520/2007-Hummer-H2---?sort_by=year&args=All_years--All_makes--All_models--All_body_types - All_vehicles

Мне нужно перенаправить эту (и многие другие похожие ссылки) на новую страницу на обновленном веб-сайте, пример страницы: domain.com/hummer.php

КакВы удаляете специальные символы (например, ---?) и все остальное из URL, чтобы я мог успешно использовать 301?

Ответы [ 2 ]

0 голосов
/ 05 декабря 2010

Зачем тебе это нужно?Если вы не планируете кодировать длинный и длинный список перенаправлений в свой файл .htaccess, вы должны выполнять все свои перенаправления в PHP.

Из приведенного вами примера URL я предполагаю, что все элементы имеют уникальный идентификатор, который уже привязан к URL.В этом случае вы можете создать карту в своей базе данных, которая говорит, что «правильным» URL для элемента 655520 является hummer.php.Вы можете использовать это для выполнения перенаправления из PHP.

Вот пример того, как вы можете это сделать.Я делаю предположение, что у вас уже есть файл .htaccess, который переводит URL в GET.Что-то вроде RewriteRule ^(.*)$ index.php?request=$1 [L,QSA]

//determine if you were passed a "legacy URL" (not shown)
if (legacyURL) {
  $urlComponents = $explode("/", $_GET['request']);
  $url = getItemUrl($components[2]);
  header("Location: " . $url,TRUE,301);
  exit();
}
0 голосов
/ 05 декабря 2010

Вы не можете ничего "раздеть" с помощью mod_rewrite.
Вы можете создавать ссылки только из частей строки и использовать их для создания нового URL.

Как вы можете это сделать, зависит от того, какой URL вы хотите создать из исходного URL.

...