我的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
这就是它失败的原因。我该如何解决这个问题?
答案 0 :(得分:0)
我终于解决了它,但是我不确定自己喜欢什么。至少它有效。如果有人有更好的解决方案,我很乐意看到它。
RewriteRule ^login/([0-9]+)/([0-9]+)$ http://host/webserv/login.php?par1=$1&par2=$2
我不喜欢这个解决方案的原因是因为我没有给出一个漂亮的网址。它只是重定向。
我仍然不明白为什么如果我写了:
,我会将根目录附加到请求中RewriteRule ^login/([0-9]+)/([0-9]+)$ login.php?par1=$1&par2=$2