Необязательные параметры URL, которые автоматически добавляются, если не включены

#php #url #cakephp #parameters

#php #url #cakephp #параметры

Вопрос:

На моем сайте есть статьи, и я бы хотел, чтобы URL был таким: example.com /(идентификатор статьи)/(название статьи)

Есть две причины, по которым я хотел бы, чтобы URL были такими, SEO и удобочитаемость.

Эта настройка близка к настройке stackoverflow. И точно так же, как в stackoverflow, я не хочу, чтобы заголовок был обязательным, но если он не включен в, я хочу, чтобы серверная часть добавляла заголовок к URL.

Чтобы понять, что я имею в виду, возьмите URL текущей страницы, удалите из нее заголовок и перейдите по этому новому URL. Если вы заметили, что при обновлении страницы заголовок был автоматически добавлен к URL.

Когда я думаю о том, как этого добиться, для этого требуется два запроса. Первый запрос получит заголовок на основе идентификатора, затем сформирует новый URL и перенаправит на него. Второй URL снова запросит базу данных с идентификатором, на этот раз отображающим статью.

Это единственный способ? Могу ли я добавить дополнительный параметр без фактического перенаправления?

Примечание: Я использую CakePHP

Ответ №1:

Я думаю, что да, это единственный способ.

Вызов # 1 для example.com /(идентификатор статьи): сервер запросит идентификатор в базе данных, увидит, что URL не является каноническим [1] и выполнит перенаправление.

Вызов # 2 для example.com /(идентификатор статьи) / (название статьи) будет вести себя как обычно, что означает еще несколько запросов к базе данных…

^ Я предлагаю вам сохранить сгенерированный URL-путь к статье, чтобы вы могли использовать его и в других местах.
Таким образом, если заголовок не был указан, путь был бы просто «/(article id)», и вам не нужно было бы делать перенаправление сюда.