Html Apache如何知道何时以及如何查找相对路径?
如果我们有这样的文件结构:Html Apache如何知道何时以及如何查找相对路径?,html,apache,Html,Apache,如果我们有这样的文件结构: / ├── aboutus │ ├── aboutus.html │ └── logo.jpg ├── validate.php ├── index.html └── logo.jpg 虽然在链接到aboutus.html(即)时必须指定文件夹,但如果放置logo.jpg,Apache将知道加载哪个文件夹。它可能只在当前目录中查找文件。我的虚拟主机部分中有以下指令: RewriteCond %{REQUEST_URI} !^/validate.php Rew
/
├── aboutus
│ ├── aboutus.html
│ └── logo.jpg
├── validate.php
├── index.html
└── logo.jpg
虽然在链接到aboutus.html
(即
)时必须指定文件夹,但如果放置logo.jpg
,Apache将知道加载哪个文件夹。它可能只在当前目录中查找文件。我的虚拟主机部分中有以下指令:
RewriteCond %{REQUEST_URI} !^/validate.php
RewriteRule ^/(.*) /validate.php?uri=$1
我是一个完全不懂这些重写规则的新手,所以这就是我希望上面所说的:我希望它拦截来自浏览器的任何请求。这些包括在地址栏中输入的请求,以及来自网页内的请求(即js文件、图像…)。接下来,我想将请求的文件发送到validate.php
validate.php
显然会验证用户,但本质上只是返回用户请求的任何文件。如果aboutus.html
像这样插入图片
,我如何确保validate.php
返回/aboutus/logo.jpg
,而不是/logo.jpg?基本上,绝对路径是由基本资源URL和相对资源URL确定的(更多信息)。为了使您的validate.php
能够正确解析图像、样式表等的相对URL,您应该以某种方式让它知道包含这些资源的文档的绝对URL(如果文档有标签,这更为棘手)。无论如何,在htaccess文件中,您总是使用绝对路径。我的意思是从根斜杠开始
尝试使用:
RewriteCond %{REQUEST_URI} !^/validate.php
RewriteRule ^(.*) /validate.php?uri=$1
Puk,你必须把两个方面分开:
- 任何HTTP请求(如GET都是绝对的,浏览器将根据引用文档的路径(或
标记中定义的路径)转换任何相对href或src属性因此,如果加载http://somehost/fred/xx.html
然后引用图像style1/images/pic.png
浏览器将请求http://somehost/fred/style1/images/pic.png
- mod_rewrite如何处理路径是完全不同的。这是服务器的业务。请参阅,其中解释了如何在每服务器配置(apache.conf或vhost.conf)和每目录配置(例如在
.htaccess
或块中)内评估相对路径和绝对路径