2009-06-29 6 views
0

Я новичок в mod_rewrite. Я пытаюсь перенаправить URL-адрес на другой, но я не могу заставить его работать.htaccess mod_rewrite с динамическими параметрами

Скажите, что я хочу передать этот URL: /cansas.php?m=2 & ID = 2-0-0-0 & ИСС = cansas к /cansas-это-хорошо-для-вы, и пусть заголовок отвечает 301, или просто обновляет URL через [R].

У меня есть это в моей .htaccess:

Варианты + FollowSymlinks

RewriteEngine на

RewriteRule^cansas.php т = 2 & ID = 2-0-0-0 & с.и.д. = cansas $ cansas-is-good-for-you [NC, R = 301]

Я подумал, что могу просто сделать простую пересылку, но где-то по пути она перестает работать. Если я вырезаю? M = 2 & id = и т. Д., Он пересылает только часть cansas в новую часть, чтобы она выглядела так: cansas-is-good-for-you? M = 2 & id = 2-0- 0-0 & sid = cansas.

Как переадресовать его, когда у меня есть несколько динамических параметров в строке URL? Пример на страницах мне нужно переслать:

/cansas.php?m=2 & ID = 2-0-0-0 & ИСС = cansas

/cansas.php?m=2 & ID = 2 -1-0-0 & ИСС = cansas

/cansas.php?m=2 & ID = 2-2-0-0 & ИСС = cansas

Любая помощь будет высоко ценится :)

M aybe это невозможно сделать так? Способ, которым я настроил его сейчас, заключается в том, что я хочу использовать новые URL-адреса, называемые/cansas-is-good-for-you, которые читаются из источника /cansas.php?m=2 & id = 2-0-0 -0 & sid = cansas, но URL-адрес, отображаемый в браузере, должен быть:/cansas-is-good-for-you. Мне нужно отправить этот старый файл cansas.php? URL на новый URL :)

ответ

1

Вы должны проверить запрос на URL-адрес с RewriteCond директивы как RewriteRule директива обрабатывает только URL-путь:

RewriteCond %{QUERY_STRING} ^m=2&id=2-0-0-0&sid=cansas$ 
RewriteRule ^cansas\.php$ /cansas-is-good-for-you? [L,R=301] 

Если вы хотите проверить только один параметр , используйте:

RewriteCond %{QUERY_STRING} ^([^&]*&)*sid=cansas(&.*)?$ 
RewriteRule ^cansas\.php$ /cansas-is-good-for-you? [L,R=301] 

И делать это только для первоначальных запросов, вам необходимо проверить request line:

RewriteCond %{THE_REQUEST} ^GET\ /cansas\.php 
RewriteCond %{QUERY_STRING} ^([^&]*&)*sid=cansas(&.*)?$ 
RewriteRule ^cansas\.php$ /cansas-is-good-for-you? [L,R=301] 
+0

Спасибо большое, Gumbo. Это решило это отлично. –

Смежные вопросы