Переписать правило в .htaccess - PullRequest
1 голос
/ 24 января 2012

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

Я хотел бы переписать этот URL:

http://www.domain.com/all-players/Spain-Real-Madrid.php?playername=Cristiano+Ronaldo+dos+Santos+Aveiro

в этот:

http://www.domain.com/Spain-Real-Madrid-Cristiano-Ronaldo-dos-Santos-Aveiro-player.html

Изменения:

  1. удалить уровень / всех игроков
  2. concat Испания-Реал-Мадрид с Криштиану + Роналду + дос + Сантос + Авейру (и добавьте между ними дефис)
  3. преобразовать + в - в значение параметра имя игрока
  4. добавить слово '-player' перед расширением файла

Другим примером является преобразование этого пути:

/all-players/England-Arsenal.php?playername=Thierry+Henry

в:

/England-Arsenal-Thierry-Henry-player.html

Спасибо, куча,

Ответы [ 2 ]

0 голосов
/ 24 января 2012

Вот правило , основанное на recusrion, которое будет делать то, что вам нужно:

Options +FollowSymLinks -MultiViews
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{QUERY_STRING} ^playername=(.*)(&|$) [NC]
RewriteRule ^all-players/([^\.]+)\.php$ /$1-%1-player.html? [L,NC]

RewriteRule ^([^+]+)\+([^+]+)(\+.*)?$ $1-$2$3 [R,L]
RewriteRule ^([^+])\+ $1 [R,L]

Этот код рекурсивно заменит все + знаки с дефисами-.

Это будет внешнее перенаправление :

  • /all-players/England-Arsenal.php?playername=Thierry+Henry на /England-Arsenal-Thierry-Henry-player.html
  • /Spain-Real-Madrid.php?playername=Cristiano+Ronaldo+dos+Santos+Aveiro на /Spain-Real-Madrid-Cristiano-Ronaldo-dos-Santos-Aveiro-player.html
0 голосов
/ 24 января 2012

AFAIR, нет способа сделать это в одном регулярном выражении.Поэтому вам нужно получить его в несколько этапов.Скорее всего, следующее не будет работать только с копированием, потому что я не очень опытный в переписывании.

RewriteRule /all-players/(.*?)\.php?playername=(.*) /all-players-1/$1-$2


RewriteCond %{THE_REQUEST} ^/all-players-1/
RewriteCond %{QUERY_STRING} \+
RewriteRule \+ -


RewriteCond %{THE_REQUEST} ^/all-players-1/
RewriteCond %{QUERY_STRING} ^[^+]+$
RewriteRule /all-players-1/(.*)  /$1-player.html [L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...