.htaccess 301 redirecionar com expressões regulares

8

Se eu tiver:

redirect 301 /users/foo http://www.example.com/profiles/foo
redirect 301 /users/bar http://www.example.com/profiles/bar

Posso fazer algo assim?

redirect 301 ^\/users/(.+)$ http://www.example.com/profiles/$1

Editar

Encontrou uma solução:

RedirectMatch users/(.+) http://www.exapmles.com/profiles/$1 [R=301,L]

Na verdade, isso redireciona em vez de reescrever.


Editar 2

Veja a solução do @Darth Android com a RewriteEnginequal funciona tão bem :)

macek
fonte

Respostas:

12

Tente usar regras de reescrita se você tiver apache:
RewriteEngine on
RewriteRule ^/users/(.*)$ http://www.example.com/profiles/$1 [R=301,L]

Observe que você precisará do ModRewrite instalado e ativado na sua configuração do apache. Puxado daqui se você precisar de um método para o IIS.

Darth Android
fonte
Na verdade, eu queria redirecionar, não apenas reescrever. Agradeço a ajuda embora :)
macek
@macek Não testei pessoalmente, mas tenho a impressão de que será redirecionado com um código 301. Vou brincar um pouco. Os [R=301,L]meios para parar o processamento de regras de reescrita e emitir um redirecionamento 301.
Darth Android
ah, eu não sabia que você poderia usar [R=301,L]no final de uma RewriteRule. Obrigado por isso :) #
2113 macek
@macek Eu não fiz até 30 segundos atrás. É por isso que venho a este site para ser totalmente honesto. Obrigado por aumentar meu conhecimento! : P
Darth Android
Eu acredito que o primeiro /sobre as RewriteRulenecessidades a serem removidas para que isso funcione como desejado. (Eu tive que removê-lo para que funcionasse no meu sistema.) Com o primeiro /removido, ficamos com:RewriteRule ^users/(.*)$ http://www.example.com/profiles/$1 [R=301,L]
rinogo 27/11/17