Довольно URL для веб-приложения

Я знаю, что есть сотни статей, руководств и руководств по Mod Rewrite, но я, как правило, лучше разбираюсь в примерах, поэтому все, о чем я прошу, это быстрое преобразование URL-адреса, и я буду на своем пути (так что я может вскрыть то, что он делает, поэтому я могу применить его к другим)

У меня есть этот URL: http://www.example.com/single.php?id=1

Теперь было бы здорово, если бы он мог следовать тому же соглашению, что и Stack Overflow, где id = 1 является фактическим заголовком страницы.

У меня есть заголовок в переменной PHP, если это какая-то помощь?

Я был бы признателен, если бы кто-то мог включить это: http://www.example.com/single/here-is-my-cool-title (где последний бит является динамическим, в зависимости от переменной PHP)

Это возможно?

Related of "Довольно URL для веб-приложения"

SO действительно имеет идентификатор сообщения и заголовок в URL-адресе, но они будут использовать только идентификатор сообщения. Название не очень подходит, так как могут быть дубликаты сообщений (одинаковое название, разные идентификаторы), изменения названия и т. Д. Для URL-адреса этого вопроса:

 /questions/5142095/pretty-urls-for-web-application 

Чтобы решить эту проблему:

 /single.php?id=5142095 

Правило перезаписи будет:

 RewriteRule ^questions/([0-9]*)/(.*)$ /single.php?id=$1 

Что это значит, это начало uri (после домена) ^ , слово questions , любая длина чисел `[0

Это ищет:

  • ^ начало URI
  • слово questions
  • косой чертой /
  • переменная длина чисел [0-9]* (например, 1, 123, 1234 и т. д.),
  • косой чертой /
  • любая длина любого символа .* (т. е. заголовок вопроса)
  • $ конец URI

Когда совпадение символов (например, [0-9] * или. *) Находится в скобках, mod_rewrite помещает результат совпадения в числовую переменную доллара. В правиле выше [0-9]* соответствует любому числу (и любой длине чисел) и помещает его в $1 . Второй матч .* Соответствует любой длине любого символа и помещает совпадение в $2 .

Ваше приложение получит URI в правой части правила, а долларовые переменные заменяются совпадениями.

Вы правы в отношении количества статей по перезаписи мод – лично мне не нравится постоянно добавлять дополнительные правила, а затем беспокоиться, будет ли это правило поймано …

Для этого я предпочитаю просто передавать лот через файл корневого индекса, а затем разрешать стороне сервера решать, что с ним делать.

Посмотри на это!

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

Этот ответ содержит все, что вам нужно, в том числе оптимизированную для SEO переадресацию из старых URL-адресов и кода для изменения старых сценариев, чтобы заставить их работать как обычно.

Единственное, что вам осталось сделать – это изменить код генерации ссылок на вашем сайте. Надеюсь, не большое дело.

Вы должны использовать mod-rewrite от Apache, вот пример:

  <Directory /www/yoursite/> RewriteEngine On RewriteRule ^single/?(.*)?/?$ article.php?id=$1 [L] </Directory> 

Изменить: рекомендуется добавить целочисленный идентификатор к вашему переписыванию, например:

  RewriteRule ^single/([0-9]+)/?(.*)?/?$ article.php?id=$1&text=$2 [L]