Como faço para obter mod_rewrite ao trabalho no meu diretório home?
Pergunta
Eu tenho meus arquivos PHP armazenados sob FreeBSD sob este diretório:
/home/david/public_html/code/php
Em meu navegador, eu acessá-los através deste URL:
http://192.168.6.7/~david/code/php
E eu tenho um arquivo htaccess para reescrever URLs:
RewriteEngine on
RewriteRule ^test test.php
Mas quando vou para http://192.168.6.7/~david/code/ php / teste no meu navegador, eu recebo este erro:
Not Found
The requested URL /home/david/public_html/code/php/test.php
Como você pode ver, a regra de reescrita é bem sucedido na tentativa de redirecionar teste para test.php. Mas por alguma razão ele falhar.
Eu encontrei isso no meu arquivo de log de erro apache:
File does not exist: /usr/local/www/data/home
Alguém sabe como consertar isso? By the way, se eu colocar isso em um diretório web e não meu diretório home, tudo funciona bem.
Solução
Definir o caminho URL base para /~david/code/php/
com RewriteBase
:
RewriteBase /~david/code/php/
Você também deve deixar claro para definir UseDir
para public_html
. Veja também diretórios por usuário web no manual do Apache .