RewriteRule для длинных URL с параметрами / Как мне их украсить? - PullRequest
1 голос
/ 14 апреля 2011

Я прочитал действительно все о RewriteRules за последние недели. Вы мое последнее средство: D

Я просто не могу заставить что-либо работать (да, Rewrite Engine включен, и простые вещи работают).

URL моего сайта выглядит так:

http://www.videospielkalender.de/?platform=wii&setfilter=1&dates=2

Я хочу такой результат

http://www.videospielkalender.de/wii/price/nextweek/

Вот и все. Я надеюсь, что какой-то гений здесь может подтолкнуть меня в правильном направлении.

Спасибо всем Оливер

Ответы [ 2 ]

3 голосов
/ 14 апреля 2011

Последний рецепт на http://wiki.apache.org/httpd/RewriteQueryString - это место для старта. В конкретном случае, который вы упомянули выше, вы хотели бы сделать что-то вроде:

RewriteRule ^/?([^\]+)/([^\]+)/([^\]+)/? /?platform=$1&setfilter=$2&dates=$3

Однако есть две довольно очевидные проблемы с этим решением. Это:

  1. как мы можем сопоставить "цену" с "1" и "следующую неделю" с "2"? Возможно, это то, что ваш обработчик / скрипт / все, что нужно сделать достаточно умным, чтобы сделать

  2. Другие URI на вашем сайте (изображения, css, js и т. Д.) Также могут быть перехвачены этим набором правил, что может привести к поломке.

Оба эти условия могут быть решены с помощью:

  1. Сделать скрипт достаточно умным для обработки аргументов и
  2. Не используйте mod_rewrite вообще. Вместо этого используйте:

FallbackResource /index.php

(или как называется ваш корневой обработчик / скрипт), и этот скрипт / обработчик напрямую управляет PATH_INFO интеллектуально.

Помните, что самое важное в mod_rewrite - это знать, когда его избегать.

2 голосов
/ 14 апреля 2011

Вы можете использовать это общее правило, чтобы переписать последний URL-путь к прежнему:

RewriteRule ^/([^/]+)/([^/]+)/([^/]+)/$ /?platform=$1&setfilter=$2&dates=$3
...