Как перенаправить только при точном совпадении URL? - PullRequest
32 голосов
/ 21 ноября 2011

Я пытаюсь перенаправить с Apache .htaccess. У меня есть следующие коды

redirectMatch 301 /user http://clients.mydomain.com

это работает довольно хорошо, но я не хочу, чтобы "/ user / login" было направлено на "http://clients.mydomain.com/login".

Как мне предотвратить это?

Ответы [ 2 ]

50 голосов
/ 21 ноября 2011

Просто добавьте ^ в начало и $ в конец

^ указывает, что регулярное выражение соответствует началу URL

$ указывает, что регулярное выражение соответствует концу URL

redirectMatch 301 ^/user$ http://clients.mydomain.com

Так что теперь ваше правило будет соответствовать только /user, а не /some/user или /user/name или /some/user/name


ПРИМЕЧАНИЕ: Если вы хотите сопоставить /user/ и /user, используйте ^/user/?$

? говорит, что соответствует предыдущему символу / группе от нуля до одного раза

1 голос
/ 21 ноября 2011

Используйте регулярное выражение, вы уже используете совпадение перенаправления.

http://httpd.apache.org/docs/2.0/mod/mod_alias.html#redirectmatch

'$' соответствует концу URL. В вашем примере:

redirectMatch 301 ^/user/(.+)$ http://clients.example.com/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...