Как автоматически получить слаг, даже если единственным предоставленным параметром является id с использованием mod_rewrite - PullRequest
1 голос
/ 22 февраля 2012

Я хочу получить пулю, даже если указан только идентификатор.Например, я ввожу это:

/4996773/kak-perepisat-url-s-zagolovkom-soobscheniya

После загрузки сайта, URL становится:

/4996773/kak-perepisat-url-s-zagolovkom-soobscheniya

Я имею в виду, что я хочу подтянуть слаг, даже еслиЯ только ввел Id.

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 22 февраля 2012

mod_rewrite не знает правильный слаг для данного идентификатора.Ваше приложение, которое генерирует слаг, делает.Таким образом, вы извлекаете слаг из базы данных, используя идентификатор, и сравниваете его с отправленным браузером.Если он не совпадает, введите 301 редирект на полный (если слаг был пуст) или правильный (если слаг не совпадал) URL.Вот так ТАК работает.Откройте эти URL и посмотрите на инспектора сети, чтобы понять, что я имею в виду:

  • /8077974/avtomaticheski-poluchit-slag-dazhe-edinstvennym-predostavlennym-parametrom-yavlyaetsya-ispolzovaniem-modrewrite
  • /8077974/avtomaticheski-poluchit-slag-dazhe-edinstvennym-predostavlennym-parametrom-yavlyaetsya-ispolzovaniem-modrewrite

В PHP проверьте$_SERVER super global, вы должны быть в состоянии найти переменные, содержащие фактический URL, перед тем как переписать.И вы можете отправить 301 заголовок так:

header("Location: /1234/correct-slug", true, 301);
1 голос
/ 22 февраля 2012

На странице, которая загружается, проверьте наличие слизняков почти сразу.Если он не существует, извлеките его из базы данных (у вас есть идентификатор) и перенаправьте на новую полную ссылку.

Если вы сделаете это перед рендерингом любого HTML и т. Д., Это будет выглядеть так, как будто это былосделано без перенаправления.

Если вы опубликуете свой текущий htaccess, я могу изменить то, что вы должны разрешить как для предоставленного слага, так и без предоставленного слага.

...