mod_rewrite相对路径不起作用。需要RewriteBase

时间:2016-01-07 05:29:20

标签: apache .htaccess mod-rewrite

我在目录中使用一个简单的.htaccess文件将该目录中的所有请求重定向到同一目录中的脚本,但相对路径不起作用,我必须使用{{1}或者它不起作用。

这是我的设置,

目录布局:

RewriteBase

当我向/ (web root) |- index.html |- hooks |- .htaccess |- server.py 提出请求时,我希望将其重写为http://example.com/hooks/foo

所以我的http://example.com/hooks/server.py/foo

.htaccess

以上工作正常。但是,如果我删除RewriteEngine On RewriteBase /hooks/ RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ server.py/$1 [L,QSA] 行,则不会。

是什么给出的?它不应该默认为相对路径吗?我的主机上是否存在配置问题?有没有办法调试这个?

1 个答案:

答案 0 :(得分:1)

如果删除RewriteBase:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ server.py/$1 [L,QSA]

因此http://example.com/hooks/foo会请求该链接 http://example.com/hooks/server.py/hooks/foo

我认为这就是你得到404错误的原因。

这条规则怎么样:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^hooks/(.*)$ server.py/$1 [L,QSA]