Правило перезаписи не пытается перенаправить - PullRequest
0 голосов
/ 27 сентября 2011

У меня есть 301 правило перенаправления для Apache:

RewriteEngine On

RewriteRule ^park.php?park_id=3       http://hiking.comehike.com/outdoors/parks/park.php?park_id=3 [R=301,L]

Я пытаюсь получить этот URL:

http://www.comehike.com/outdoors/parks/park.php?park_id=3

для перенаправления на этот URL:

http://hiking.comehike.com/outdoors/parks/park.php?park_id=3

Но, как я понял, он не пытается перенаправить.Файл .htaccess с правилом находится в каталоге / parks /.

Что-то я делаю не так?Похоже, это должно быть относительно прямо вперед.

Спасибо!

1 Ответ

3 голосов
/ 27 сентября 2011

Это строка запроса;вам нужно добавить условное выражение, чтобы иметь возможность подобрать его, что-то вроде:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^park_id=3$
RewriteRule ^park.php http://hiking.comehike.com/outdoors/parks/park.php?park_id=3 [R=301,L]

Это работает, когда я все равно перевожу его в .htaccess на моем локальном хосте.

Это можетв конечном итоге лучше, так как это сопоставление с шаблоном RegExp для выполнения чего-то вроде:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^park_id=([0-9]+)$
RewriteRule ^park.php http://hiking.comehike.com/outdoors/parks/park.php?park_id=%1 [R=301,L]

, который будет брать целое число в конце адреса и передавать его на новый адрес (на самом деле это проще, если вы неу вас нет строки запроса в исходном адресе, конечно).

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