0

我的 Windows 开发机器上有这个 .htaccess,一切正常

RewriteEngine On
RewriteRule ^(.+[^/])/$ http://%{HTTP_HOST}/webserv/$1 [R=301,L]
RewriteRule   ^login/([0-9]+)/([0-9]+)$   login.php?par1=$1&par2=$2 [L,NC,QSA]

当我将它上传到我的 Centos 服务器上时,我得到了错误

404 The requested URL path_to_script/login.php was not found on this server.

我不明白为什么会这样。该文件肯定在那里,我给了权限 777。

我通过在其中添加垃圾并获得内部错误(500)来检查是否实际使用了 .htaccess,这意味着它正在工作。

此外,当我使用 .htaccess 对可以访问其工作目录的 IP 进行限制时。mod_rewrite 已加载,如我尝试过的 phpinfo() 所示。

我在这里不知所措。

编辑

我注意到它尝试在将其附加到根路径的 base_path 中进行搜索,例如

/path_to_script/path_to_script/login.php

这就是它失败的原因。我该如何解决这个问题?

4

1 回答 1

0

我终于解决了它,但我不确定我是否喜欢。至少它有效。如果有人有更好的解决方案,我会很高兴看到它。

RewriteRule   ^login/([0-9]+)/([0-9]+)$   http://host/webserv/login.php?par1=$1&par2=$2

我不喜欢这个解决方案的原因是因为我没有给出漂亮的 url。它只是重定向。

如果我改为写,我仍然不明白为什么将根目录附加到请求中:

RewriteRule   ^login/([0-9]+)/([0-9]+)$   login.php?par1=$1&par2=$2
于 2013-06-17T12:05:44.457 回答