Apache2 mod_rewrite + 用户目录

Apache2 mod_rewrite + 用户目录

我有一个 Ubuntu 服务器(Web),其配置如下

  • 版本:13.10
  • 已安装:Apache2、apache2 utils、php5
  • 已启用:重写、userdir

问题

例如,当我尝试使用重写规则时foo.bar.com/~«user»/page,我得到了

/home/«user»/public_html/page.php该服务器上未找到所请求的 URL 。

据我所知,它就在那里;当我去参观时foo.bar.com/~«user»/page.php;塔达!它就在那里。

我阅读了下面的所有配置/etc/apache2/apache2.conf/etc/apache2/mods-available/userdir.conf但对我来说似乎没有什么奇怪的。

附加信息

用户foder的权限:drwx r-x r-x

public_html 的权限drwx r-x r-x

我读到我必须提供重写基础,但我真的没有看到路径有什么奇怪的地方

我错过了什么?


重写规则:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

或者

RewriteRule ^login/?  login.php [L]

顺便说一句,我尝试将目录移动到 /var/www,现在重写规则可以运行,没有 404 错误。

答案1

你似乎没有设置RewriteBase,所以很可能默认为:

RewriteBase /

因此,如果您想使用它,userdir也许您应该在 Apache 配置文件中更改重写规则(在apache2.conf或中httpd.conf),如下所示:

RewriteEngine on
RewriteBase /~username/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

答案2

我在 ubuntuforums.org 上发现了这一点:

RewriteBase /~username/

http://ubuntuforums.org/showthread.php?t=1196217

相关内容