Como mapear o caminho para o path.html no Apache?

3

Meu site antigo era dinâmico, então todos os permalinks eram dessa forma:% http://wangling.me/2000/01/file ou '' link '

Agora, acabei de recriar meu site com arquivos html estáticos para que os permalinks se tornem:
http://wangling.me/2000/01/file.html

Por isso, quero mapear permalinks antigos para novos permalinks. Eu escrevi isso em /etc/apache2/sites-enabled/wangling.me :

<VirtualHost *:80>
     ServerAdmin xxx
     ServerName wangling.me
     ServerAlias *.wangling.me
     DocumentRoot doc_root
     RewriteEngine On
     RewriteCond /$1 !-d
     RewriteCond /$1 !-f
     RewriteCond /$1.html -f
     RewriteRule ^/([^.]+?)/*$ /$1.html
</VirtualHost>

Mas isso não funciona. Aqui estão os registros relevantes:

[Sat Jan 19 00:49:01 2013] [error] [client 24.12.163.253] File does not exist: doc_root/2012/05/xyz

Portanto, parece que o RewriteRule não é usado. Eu sei que deve haver algo errado com a minha configuração porque eu não tenho certeza do que exatamente Pattern está em RewriteRule Pattern Substitution . É o URL absoluto ( link ), o URL relativo (2012/05 / xyz), o caminho absoluto do arquivo (doc_root / 2012 / 05 / xyz), ou caminho de arquivo relativo (2012/05 / xyz)?

    
por an0 18.01.2013 / 18:31

1 resposta

0

Por tentativa e erro, descobri que Pattern é o URL relativo (/ 2012/05 / xyz) em RewriteRule Pattern Substitution . Então a configuração correta é:

<VirtualHost *:80>
     ServerAdmin xxx
     ServerName wangling.me
     ServerAlias *.wangling.me
     DocumentRoot doc_root
     RewriteEngine On
     RewriteCond %{DOCUMENT_ROOT}/$1 !-d
     RewriteCond %{DOCUMENT_ROOT}/$1 !-f
     RewriteCond %{DOCUMENT_ROOT}/$1.html -f
     RewriteRule ^/([^.]+?)/*$ /$1.html
</VirtualHost>
    
por 24.01.2013 / 01:19