# Atualizando da versão 1.3 para 2.0

Com a finalidade de ajudar as pessoas na atualização do servidor, nós mantemos um documento que descreve informações críticas para os usuários já existentes do Apache. Essas informações tem o intuito de serem breves notas e você deverá encontrar mais informações no documento Novas Funcionalidades, ou no arquivo `src/CHANGES`.

Descrição das novas funcionalidades do Apache 2.0

# Mudanças na Configuração em tempo de Compilação

- O Apache agora usa o sistema `autoconf` e `libtool` para configurar o processo de construção. A utilização desse sistema é similar, mas não o mesmo, a usar o sistema APACI do Apache 1.3
- Além da seleção habitual de módulos que você pode escolher para compilar, o Apache 2.0 mudou a parte principal de processamentos de pedidos para os Módulos Multi-Processamento (MPMs).

# Mudanças na Configuração em tempo de Execução

- Muitas diretrizes que estavam no núcleo do servidor no Apache 1.3 estão agora nos MPMs. Se você desejar que o funcionamento do servidor seja o mais similar possível ao do Apache 1.3, você deve selecionar o MPM prefork. Os outros MPMs terão diretrizes diferentes para controlar a criação de processos e o processamento de pedidos.
- O módulo proxy foi reconstruído para o padrão HTTP/1.1. Ao longo das mudanças importantes, o controle de acesso ao proxy agora fica dentro de um bloco Proxy, ao invés de um bloco `<Directory proxy:>`.
- A operação com `PATH_INFO` (informação de caminho procedente depois do nome do arquivo verdadeiro) mudou para alguns módulos. Módulos que eram previamente implementados como manipuladores mas agora são implementados como filtros não podem mais aceitar pedidos com `PATH_INFO`. Filtros como INCLUDES ou PHP são implementados no topo dos manipuladores principais, rejeitando pedidos com `PATH_INFO`. Você pode usar a diretriz AcceptPathInfo para forçar o manipulador principal a aceitar pedidos com `PATH_INFO` e assim restaurar a habilidade de usá-lo em inclusões por parte do servidor (SSI).
- A diretriz CacheNegotiatedDocs agora aceita o argumento `on` ou `off`. Instâncias existentes de CacheNegotiatedDocs deverão ser substituídas por `CacheNegotiatedDocs on`.
- A diretriz ErrorDocument não usa mais aspas no começo do argumento para indicar mensagens de texto. Ao invés disso, você deve colocar a mensagem inteira entre aspas. Por exemplo, instâncias existentes de

  ErrorDocument 403 "Alguma mensagem
  devem ser substituídas por

  ErrorDocument 403 "Alguma mensagem"

  Contanto que o segundo argumento não seja uma URL válida ou um caminho de arquivo, irá ser tratado como uma mensagem de texto.
- As diretrizes `AccessConfig` e `ResourceConfig` não existem mais. Instâncias existentes dessas diretrizes podem ser substituídas com a diretriz Include que possui uma funcionalidade equivalente. Se você estava fazendo uso dos valores padrões dessas diretrizes sem incluí-las nos arquivos de configuração, você provavelmente terá que adicionar `Include conf/access.conf` e `Include conf/srm.conf` ao seu `httpd.conf`. Com o fim de assegurar que o Apache leia os arquivos de configuração na mesma ordem que as diretrizes velhas usavam, a diretriz Include deve ser colocada no final do `httpd.conf`, com uma entrada para `srm.conf` antes de `access.conf`.
- As diretrizes `BindAddress` and `Port` não existem mais. Uma funcionalidade equivalente é fornecida com uma diretriz mais flexível Listen.
- Outro uso da diretriz `Port` no Apache-1.3 era ajustar o número da porta usada em URLs auto-referenciáveis. O equivalente no Apache-2.0 é a nova sintaxe ServerName: ela foi modificada para permitir que sejam especificados ambos "hostname" e o número da porta para URLs auto-referenciáveis em uma só diretriz.
- A diretriz `ServerType` não existe mais. O método usado para atender pedidos é determinado pela seleção de MPM. Atualmente não existe nenhuma MPM projetada para ser executada pelo inetd.
- Os módulos `mod_log_agent` e `mod_log_referer` que forneciam as diretrizes `AgentLog`, `RefererLog` e `RefererIgnore` foram removidas. Registros de agentes e referências ainda estão disponíveis usando a diretriz CustomLog do mod_log_config.
- As diretrizes `AddModule` e `ClearModuleList` não existem mais. Essas diretrizes eram usadas para garantir que módulos pudessem ser habilitados na ordem correta. A nova API do Apache 2.0 permite que os módulos especifiquem explicitamente a sua ordem, eliminando a necessidade dessas diretrizes.
- A diretriz `FancyIndexing` foi removida. A mesma funcionalidade está disponível através da opção `FancyIndexing` da diretriz IndexOptions.
- A técnica de negociação de conteúdo (content-negotiation) MultiViews fornecida pelo mod_negotiation se tornou mais rigorosa em sua combinação de arquivo padrão. Ela irá selecionar apenas arquivos negociáveis (negotiable). O comportamento antigo pode ser restaurado usando a diretriz MultiviewsMatch.
- (desde a versão 2.0.51)

  A funcionalidade da diretriz `ErrorHeader` foi colocada em conjunto com a diretriz Header, já que era um uso de um nome impróprio. Utilize

  Header always set foo bar

  para obter o comportamento desejado.

# Mudanças Gerais

- O módulo mod_auth_digest, que era experimental no Apache 1.3, é agora um módulo padrão.
- O módulo `mod_mmap_static`, que era experimental no Apache 1.3, foi substituído com mod_file_cache.
- A distribuição foi completamente reorganizada para não conter mais um diretório `src` independente. Em seu lugar, os fontes são organizados logicamente no diretório principal da distribuição e a instalação do servidor compilado deve ser direcionada à um diretório separado.

# Módulos de Terceiros

Mudanças extensivas foram feitas na API do servidor no Apache 2.0. Módulos existentes projetados para a API do Apache 1.3, não funcionarão no Apache 2.0 sem modificações. Detalhes serão fornecidos na documentação do desenvolvedor.