Динамические правила .htaccess - PullRequest
10 голосов
/ 25 октября 2011

Я обновлял свой сайт дважды с прошлого года, и у меня есть разные названия страниц с моей первой версии. Можно ли создавать динамические правила в apache?

например:

Я использую эти страницы (пример):

  • / abc123 (версия 1)
  • / abc_123 (версия 2)
  • / abc-123 / (версия 3 - текущая)

Я хочу создать правило, которое перенаправит abc123 в abc_123, если он существует, и abc_123 в abc-123, если он существует. Спасибо

Ответы [ 2 ]

16 голосов
/ 26 октября 2011

Почему бы и нет?

RewriteRule ^([a-z]+)([0-9]+)$ /$1-$2 [NC,L]
RewriteRule ^([a-z]+)_([0-9]+)$ /$1-$2 [NC,L]

РЕДАКТИРОВАТЬ:

или вы можете использовать 1 правило:

RewriteRule ^([a-z]+)(_?)([0-9]+)/?$ /$1-$3 [NC,L]

так простодобавлять символы в (_?) вместо создания одного и того же правила снова и снова с небольшой дисперсией.

0 голосов
/ 25 октября 2011

Я нашел этот пример :

RewriteEngine on
#
# If the requested URL exists as a file with a .php extension
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
# internally rewrite requested .html URL to .php file
RewriteRule ^(([^/]+/)*[^.]+)\.html$ /$1.php [NC,L]

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...