.htaccess 在域 ip 中使用 ~user 参数进行路由 (apache UserDir)

.htaccess routing in domain ip with ~user parameter (apache UserDir)

我在 PHP 开发了一个应用程序,通过 .htaccess 使用路由系统,直到今天,我已经成功地在任何服务器环境中部署这个应用程序,没有任何问题。

今天,我的一个客户要求我将应用程序部署到尚未关联任何域的服务器上,因此,他向我提供了 IP 地址,让我测试是否一切正常。问题是这个 IP 需要用户名参数出现在 URL 中,这导致执行总是被重定向到服务器默认的 404 错误页面。

IP是这样的(部分值已更改):

http://192.185.65.31/~gef/

如果我只执行那个 link 而没有任何其他参数,我可以访问我的 serverindex.php 文件,该文件被配置为我在 .htaccess 中的 DirectoryIndex。 但是,如果我尝试添加更多参数,例如语言 (en/),我将自动重定向到 404 页面。

我的.htaccess路由配置如下:

DirectoryIndex serverindex.php

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . serverindex.php

这个配置总是允许我接收和操作一个 URL 就像下面的例子:

Example: http://example.com/param1/param2/param3

Array
(
    [0] => param1
    [1] => param2
    [2] => param3
)

如何设置 .htaccess 以便我在 URL 中保留用户名不变(以便服务器可以处理它并记录正确的用户帐户),并将以下数据作为参数传递进入应用程序?

Example: http://example.com/~username/p1/p2/p3

Array
(
    [0] => p1
    [1] => p2
    [2] => p3
)

您有目标脚本的相对路径。您可能需要添加一个 RewriteBase 才能正常工作,例如

RewriteBase /~gef/