mod_rewrite日志显示了预期但仍然获得404?

时间:2014-03-31 09:55:41

标签: apache mod-rewrite http-status-code-404

我正在尝试从我的用户目录中重定向以下内容:

/              > index.php?module=home
/MODULE/       > index.php?module=MODULE
/MODULE/ACTION > index.php?module=MODULE&action=ACTION

这些是我的规则:

RewriteEngine On

# Rewrite to home page.
#   Input:
#   Output: index?module=home
RewriteRule ^$ index.php?module=home [L,QSA,NC]

# Redirects to a module
#   Input:  MODULE/
#   Output: index.php?module=MODULE
RewriteRule ^(\w+)/?$ index.php?module=$1 [L,QSA,NC]

# Redirects to a module with the specified action
#   Input:  MODULE/ACTION/
#   Output: index.php?module=MODULE&action=ACTION
RewriteRule ^(\w+)/(\w+)/?$ index.php?module=$1&action=$2 [L,QSA,NC]

我总是得到404.

日志显示了我的期望:

[perdir /home/james/public_html/mysite/] rewrite 'user/login' -> 'index.php?module=user&action=login', referer: http://localhost/~james/mysite/
[perdir /home/james/public_html/mysite/] add per-dir prefix: index.php -> /home/james/public_html/mysite/index.php, referer: http://localhost/~james/mysite/

它正确地重写了所需的URL并且它正在添加用户目录,为什么404?


从访问日志中找不到它的文件:

"GET /~james/mysite/user/login HTTP/1.1" 404 1130 "http://localhost/~james/mysite/"

1 个答案:

答案 0 :(得分:1)

我通过添加以下内容来修复它:

RewriteBase /~james/mysite/

奇怪的是它如何正确地解析了URL但返回了404.也许比我更聪明的人可以更清楚地了解这个问题。