使用.htaccess将子目录设置为根目录

Sti*_*ily 7 php directory .htaccess rewrite root

有没有办法使用htaccess来告诉子目录充当整个站点的根?

例如,如果我在http:// localhost/testsite /下有一个网站,并且在它的index.php文件中,我使用以下代码引用了样式表.

<link rel="stylesheet" type="text/css" href="/css/layout.css" />
Run Code Online (Sandbox Code Playgroud)

我可以加载/localhost/testsite/css/layout.css吗?

为了解决这个问题,我为每个站点设置了localhost子域,虽然有效,但并不理想.

非常感谢.

hue*_*ois 20

如果你想保留'href ="/ css/layout.css"'部分,那么是的,你可以设置一个重写规则.你必须小心不要重定向以/ testsite开头的任何东西(或者你最终会得到一个循环).

喜欢(在root .htaccess中):

RewriteEngine On

RewriteCond %{REQUEST_URI} !^/testsite/.*$
RewriteRule ^(.*)$ /testsite/$1 [QSA,L]
Run Code Online (Sandbox Code Playgroud)

在那里,您将能够从以下位置访问layout.css文件:

HTTP://localhost/testsite/css/layout.css

要么

HTTP://localhost/css/layout.css


hak*_*kre 4

当然,所有相对 URI(如您的)都相对于基本 URI,默认情况下是文档的 URI:

http://localhost/testsite/index.php
Run Code Online (Sandbox Code Playgroud)

您只需要告诉要添加哪一部分:

<link rel="stylesheet" type="text/css" href="./css/layout.css" />
                                             ^
                                             ` see this dot
Run Code Online (Sandbox Code Playgroud)

例子:

Base URI      ::  http://localhost/testsite/index.php
Relative URI  ::  ./css/layout.css
Result        ::  http://localhost/testsite/css/layout.css
Run Code Online (Sandbox Code Playgroud)

如果您需要更加模块化,有多种方法可以实现。一种是在 HTML 文档中显式设置基本 URI(请参阅 参考资料<base>)。

另一种方法是根据请求 URI和站点的根路径在服务器端相对解析链接。请参阅此答案的示例。