![Apache2 mod_rewrite + 用户目录](https://linux22.com/image/620725/Apache2%20mod_rewrite%20%2B%20%E7%94%A8%E6%88%B7%E7%9B%AE%E5%BD%95.png)
我有一个 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/