nginx URLs curtos para mediawiki

1

Estou tentando fazer URLs curtos para um site do MediaWiki. O wiki está em um subdiretório mydir ( link ). Eu já configurei reescreve em /etc/nginx/sites-available para que example.com redirecione para example.com/mywiki.

Atualmente, o URL é como http://www.example.com/mywiki/index.php?title=Main_Page . Desejo limpar o URL para que pareça http://www.example.com/mywiki/Main_Page . Estou tendo um pouco de dificuldade para fazer isso. Não estou familiarizado com expressões regulares ou com a sintaxe usada pelos arquivos de configuração do nginx.

Isso é o que eu tenho atualmente:

server_name example.com www.example.com;

location / 
{
  rewrite ^.+ /mywiki/ permanent;
}

location /wiki/ 
{
  rewrite ^/mywiki/([^?]*)(?:\?(.*))? /mywiki/index.php?title=$1&$2 last;
}

A segunda reescrita é obviamente a que está quebrada. Ele é baseado em Título da página - nginx reescrever - acesso root na documentação do MediaWiki .

Quando tento carregar o site, o navegador me diz que recebo redirecionamentos infinitos. Alguém como devo proceder para corrigir este problema? Ou melhor, qual é a maneira correta de implementar isso e o que significam todos esses símbolos?

    
por William 28.06.2012 / 06:12

1 resposta

2

Essa é uma expressão muito interessante que eles têm lá. Sua principal página de manual para URLs curtos diz o seguinte:

These guides are old and are almost entirely bad advice.

De qualquer forma, vamos ver se podemos simplificá-lo um pouco.

rewrite ^/wiki/([^\?]*) /mywiki/index.php?title=$1&$args last;

Note que você não pode sobrepor o caminho 'bonito' (que você colocou no bloco location , então vamos rodar com ele) e o caminho físico; a norma é usar /wiki/ como o caminho bonito (seu $wgArticlePath config) e /w/ como o caminho físico (seu $wgScriptPath config).

Então, tudo somado, algo assim:

location / {
  rewrite ^/$ /wiki/ permanent;
}

location /wiki/ {
  rewrite ^/wiki/([^\?]*) /mywiki/index.php?title=$1&$args last;
}

... e você precisará do tratamento do PHP de alguma forma, conforme mostrado no exemplo, bem como para atualizar o Settings.php com as configurações apropriadas de $wgScriptPath e $wgArticlePath , além de definir $wgUsePathInfo para true.

    
por 28.06.2012 / 08:16