ТАК как URL с mod_rewrite - PullRequest
1 голос
/ 17 мая 2011

Я хочу получить схему URL, точно такую ​​же, как URL вопроса SO.

Как http://stackoverflow.com/questions/6035363/so-like-url-with-mod-rewrite

Эта страница может быть доступна с помощью http://stackoverflow.com/questions/6035363, но затем она перенаправляется на http://stackoverflow.com/questions/6035363/so-like-url-with-mod-rewrite

Мне нужно сделать то же самое.
Моя страница будет в корневом каталоге с именем article.php
URL будет выглядеть как

article.php?id=1&title=some_text  

Я хочу, чтобы это былодоступ с помощью [любой из них будет]

acticle.php/id/1/some_text  

или

acticle/id/1/some_text  

или

acticle/id/1&title=some_text  

[К сожалению, я действительно не знаю о mod_rewriteЯ прочитал некоторые вопросы и погуглил некоторые шпаргалки, но ни один из них не сработал: (
Так что ищите какое-нибудь решение для копирования-вставки)

1 Ответ

1 голос
/ 17 мая 2011

Лучше всего, если вы разделите и покорите URL для его обратного инжиниринга.

Итак, несколько ключевых моментов:

  1. 6035363 является важной частью URL, так какидентификатор вопроса.
  2. Все остальное - произвольный SEO, дружественные URL-адреса
  3. Наличие нескольких URL-адресов на одной странице повредит SEO, поэтому придерживайтесь одного формата URL

С учетом сказанного, article/id/some_keyword_text - это формат, который я предлагаю.Следующие RewriteRules будут обрабатывать его.

RewriteEngine On
RewriteBase /
RewriteRule ^article/(\d+)/?$ test/article.php?id=$1 [L]
RewriteRule ^article/(\d+)/([\w-]+)/?$ test/article.php?id=$1&title=$2 [L]

Первое правило перенаправляет article/id с необязательным завершающим слешем.Второе правило перенаправляет article/id/some_keyword_text с дополнительной косой чертой.some_keyword_text может содержать только буквенно-цифровые символы, символы подчеркивания или тире.

Примечание: Перенаправление для URL-адресов формата article/id происходит на уровне страницы.Так что это не RewriteRule, а логика на странице, которая перенаправляет, когда title не установлено.Я предполагаю, что редирект 301 обеспечит пункт № 3.

...