2

我在 server.com/site_admin/api 中有一个 .htaccess (实际目录结构:/public_html/site_admin/api)

我想将所有请求定向到相应的 php 文件。所以 api/users 会重写为 api/users.php

所以我写了这条规则:

 RewriteEngine On
 RewriteRule ^(.*)$ $1.php 

但它不起作用。当我访问 url server.com/site_admin/users 时收到 404

当我向它添加 [R=301] 时

 RewriteRule ^(.*)$ $1.php [R=301]

我发现它重定向到http://server.com/home/server_user/public_html/site_admin/api/users.php 而不是http://server.com/site_admin/api/users.php

有人可以帮我吗

4

1 回答 1

2

用这个:

RewriteEngine On
RewriteCond %{REQUEST_URI} !php$
RewriteRule ^(.*)$ $1.php

你的不起作用,因为重写的 url 仍然匹配(.*),所以它会再次重写它,直到导致错误。但奇怪的是它给你一个 404 而不是 500 ......

第二个不起作用,因为[R]生成了一个新的 GET 请求,因此您需要添加主机,否则它将请求定义主机的绝对路径,显然它不起作用。如果你想使用 [R],你应该使用:

RewriteRule ^(.*)$ http://server.com/site_admin/api/$1.php [R]

但它不会解决你的问题。正如我所说,它将生成一个新的 GET 请求,并且.php对您的用户可见。

于 2012-07-05T17:55:11.003 回答