Переписування старих URL-адрес на нові чисті

I have me .htaccess file happily rewriting things like /conferences/details/21 to /index.php?pages=conferences&var1=details&var2=21.

У мене є Piwik, який відстежує цей сайт, який відображає багато рефералів із сайтів, які не оновлюють свої URL-адреси (це дуже новий сайт), з URL

http://www.domain.com/index.cfm?page=conference&intConferenceID=81

І

http://www.domain.com/index.cfm?page=conference&intConferenceID=88&type=conference

Я хотів би переписати їх на /конференції/деталі/[числовий ідентифікатор, побачений вище] .

Я спробував:

RewriteRule ^index.cfm?page=conference&intConferenceID=(\d+)/?$ /conferences/details/$1 [L,NC,QSA]

Недовірно ігноруючи другий приклад. Однак, це дає мені 404 слова index.cfm не знайдено.

Яке правило перезапису потрібно написати, щоб переписати наведені вище відформатовані посилання (зміни ідентифікаторів) на /conferences/details/[ID] ?

0

1 Відповіді

Можна витягти рядок запиту з RewriteCond:

RewriteCond %{REQUEST_URI} ^/index.cfm
RewriteCond %{QUERY_STRING} page=(.+)&intConferenceID=([^&]+)
RewriteRule . /%1/details/%2 [L]

Not sure where the "details" comes from based on the /foo/bar/21 -> /index.php?f=foo&b=bar&arg=21 rewriting.

1
додано
Дуже дякую. деталі походить від чистої URL-адреси, яка є такою: /conferences/details/21 . Я відредагував своє питання відповідно.
додано Автор Bojangles, джерело
В основному, RewriteRule не буде переписувати рядок запиту, а лише шлях. Необхідно використовувати RewriteCond, щоб відповідати рядку запиту і отримати доступ до відповідностей з%
додано Автор Jon Lin, джерело