如何让mod_rewrite在我的主目录中工作?

Dav*_*nes 0 php apache freebsd

我将我的PHP文件存储在FreeBSD下的这个目录下:

/home/david/public_html/code/php
Run Code Online (Sandbox Code Playgroud)

在我的浏览器中,我通过以下URL访问它们:

http://192.168.6.7/~david/code/php
Run Code Online (Sandbox Code Playgroud)

我有一个htaccess文件来重写URL:

RewriteEngine on
RewriteRule ^test test.php
Run Code Online (Sandbox Code Playgroud)

但是当我在浏览器中访问http://192.168.6.7/~david/code/php/test时,我收到此错误:

Not Found

The requested URL /home/david/public_html/code/php/test.php
Run Code Online (Sandbox Code Playgroud)

如您所见,重写规则成功尝试将测试重定向到test.php.但由于某种原因,它失败了.

我在我的apache错误日志文件中找到了这个:

File does not exist: /usr/local/www/data/home
Run Code Online (Sandbox Code Playgroud)

有人知道怎么修这个东西吗?顺便说一句,如果我把它放在一个web目录而不是我的主目录中,一切正常.

Gum*_*mbo 5

将基本URL路径设置/~david/code/php/RewriteBase:

RewriteBase /~david/code/php/
Run Code Online (Sandbox Code Playgroud)

您还应该明确设置UseDirpublic_html.另请参阅Apache手册中的每用户Web目录.