Сведения о вопросе

Martincow

23:28, 7th August, 2020

Теги

url   rewrite    

URL без ID

Просмотров: 468   Ответов: 4

Я часто вижу (переписанный) URLs без ID в нем, как на некоторых установках wordpress. Каков наилучший способ достичь этого? Пример: site.com/product/some-product-name/ Может быть, чтобы сохранить массив имен страниц и IDs в кэше, чтобы избежать DB запроса на каждом запросе страницы? Как избежать конфликтов и каковы другие проблемы при использовании URL-адресов без IDs?



  Сведения об ответе

prince

06:00, 22nd August, 2020

Использование ID представляет собой ту же самую головоломку, на самом деле-вы просто проверяете другое значение в своей базе данных. Часть " some-product-name " вашего URL выше также является чем-то уникальным. Некоторые люди называют их слизнями (Wordpress, также постоянные ссылки). Поэтому вместо того, чтобы запрашивать базу данных для строки, которая имеет конкретный ID, вы запрашиваете базу данных для строки, которая имеет определенный slug. Вам не нужно знать ID, чтобы получить запись.


  Сведения об ответе

PAGE

08:38, 16th August, 2020

Пока названия продуктов уникальны, это не должно быть проблемой. Это не займет больше времени (по крайней мере, не существенно), чтобы найти продукт с уникальным именем, чем numeric ID, пока столбец индексируется.


  Сведения об ответе

lats

07:34, 28th August, 2020

Wordpress имеет поле в таблице wp_posts для слизняка. Когда вы создаете сообщение, оно создает слиток из заголовка сообщения (если это так настроено), заменяя пробелы тире (или я думаю, что вы можете установить его в подчеркивание). Он также убирает апострофы, запятые или что-то еще. Я думаю, что это также ограничивает общую длину пули.

Короче говоря, это не динамическое декодирование URL в заголовок сообщения-в таблице есть поле, которое непосредственно соответствует версии URL названия сообщения.


  Сведения об ответе

padenie

08:11, 18th August, 2020

Как вы можете знать или не знать, URLs переписываются с помощью модуля mod_rewrite Apache. Как уже упоминалось здесь, Wordpress-это в фоновом режиме присвоение слизняку после очистки названия или названия должности.

Но, чтобы ответить на ваш вопрос, то, что вы описываете, является функцией Wordpress' "Pretty Permalinks", и вы можете узнать больше об этом в Кодексе Wordpress . Более новые версии Wordpress делают переписывание внутренне (нет .htaccess editin, wp_rewrite вместо этого). Именно поэтому вы увидите один и тот же набор правил для любой структуры permalink.

Хотя, если вы немного покопаетесь, вы можете найти старые правила переписывания. Например:

RewriteRule ^([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/?$ /index.php?year=$1&monthnum=$2&day=$3 [QSA,L]

Возьмет URL как /2008/01/01/ и направит его в /index.php?year=2008&monthnum=01&day=01 (и загрузит категорию даты).

Но, как уже упоминалось, такая страница, как product-name , существует только потому, что Wordpress уже очистил Заголовок сообщения и сохранил его как поле в базе данных.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться