Apache mod_重写相对路径不工作。需要重新编写基础

Apache mod_重写相对路径不工作。需要重新编写基础,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我在目录中使用一个简单的.htaccess文件将该目录中的所有请求重定向到同一目录中的脚本,但相对路径不起作用,我必须使用RewriteBase,否则它将不起作用 这是我的设置 目录布局: / (web root) |- index.html |- hooks |- .htaccess |- server.py 当我请求http://example.com/hooks/foo我希望它可以重写为http://example.com/hooks/server.py/foo 这是我的.h

我在目录中使用一个简单的.htaccess文件将该目录中的所有请求重定向到同一目录中的脚本,但相对路径不起作用,我必须使用
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]
以上方法很好。但是如果我删除
RewriteBase/hooks/
行,它就不会删除


有什么好处?它不应该默认为相对路径吗?我的主机上是否存在配置问题?有什么方法可以调试它吗?

如果删除RewriteBase:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ server.py/$1 [L,QSA]
因此,我们将请求链接

我想这就是你出现404错误的原因

这个规则怎么样:

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

如果删除“重写基”:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ server.py/$1 [L,QSA]
因此,我们将请求链接

我想这就是你出现404错误的原因

这个规则怎么样:

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

当您删除
RewriteBase
时,它将重写到的URL将是:
http://example.com/hooks/foo/server.py/foo
RewriteBase
被注释掉时,
http://example.com/hooks/foo
?@hjpotter92哦,这很有道理!但为什么呢?如果foo不是有效的directory@anubhava是的,它是404's404的确切错误消息是什么?当您删除
RewriteBase
时,它将重写到的URL将是:
http://example.com/hooks/foo/server.py/foo
当注释掉
RewriteBase
时,
http://example.com/hooks/foo
?@hjpotter92哦,这很有道理!但为什么呢?如果foo不是有效的directory@anubhava是的,它是404的。404的错误消息是什么?这只是写同样东西的另一种方式。我正在尝试删除指定当前目录的需要。这只是编写相同内容的另一种方式。我正在尝试删除指定当前目录的需要。