Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Url 将相对链接转换为绝对链接?_Url_Relative Path_Hyperlink - Fatal编程技术网

Url 将相对链接转换为绝对链接?

Url 将相对链接转换为绝对链接?,url,relative-path,hyperlink,Url,Relative Path,Hyperlink,我正在用PHP和正则表达式编写一个小脚本 此脚本的目的是提取页面中的所有链接,并将这些链接转换为绝对链接(如果是相对链接)- 我想,相对链接是如何工作的,但它们也有一些问题 假设我们有这个页面 如果此页面有以下链接 index.html---绝对链接将为 ./index.html--绝对链接将为 ../index.html---绝对链接将为 /index.html---绝对链接将为 所以 index.html=将在当前目录中打开 ./index.html=也将在当前目录中打开 ../index.

我正在用PHP和正则表达式编写一个小脚本

此脚本的目的是提取页面中的所有链接,并将这些链接转换为绝对链接(如果是相对链接)- 我想,相对链接是如何工作的,但它们也有一些问题

假设我们有这个页面 如果此页面有以下链接

index.html---绝对链接将为

./index.html--绝对链接将为

../index.html---绝对链接将为

/index.html---绝对链接将为

所以

index.html=将在当前目录中打开

./index.html=也将在当前目录中打开

../index.html=将在父目录中打开

/index.html=将在根目录中打开

问题是,如果URL是搜索引擎友好的,该怎么办

假设我们有这个URL

((案例1)):

((案例2)):

案例1中的“索引”是目录还是页面?案例2中的“索引”是目录还是页面? 以及以下链接在案例1和案例2中作为绝对链接的外观

index.html--

./index.html--

../index.html----

/index.html--

我不确定这对你们中的一些人来说是否是一个简单的问题,但对我来说这是一个令人困惑的问题

谢谢:)

直接回答您的例子 在案例1中,
索引
是URL的“目录组件”,而在案例2中,
索引
是URL的“文件组件”。这与它实际上是web服务器上的常规文件还是目录无关——请参见下面的说明。如果服务器在这些URL上提供HTML页面,我将两者都称为“页面”

案例1:(来自
的链接)

  • index.html
    ->
  • /index.html
    ->
  • 。/index.html
    ->
  • /index.html
    ->
  • 案例2:(来自
    的链接)

  • index.html
    ->
  • /index.html
    ->
  • 。/index.html
    ->
  • /index.html
    ->
  • 所以唯一保持不变的是绝对链接-4

    解释 链接是相对于浏览器所在的URL的,该URL可能不是您最初输入的URL(例如,在HTTP重定向上)。大多数web浏览器会在您跟随链接或重定向后使用当前地址更新URL栏,因此,除非您刚刚编辑了该地址,否则您看到的地址才是最重要的地址

    以斜杠结尾的URL被认为是指目录(由for URI语法暗示,尽管它实际上并没有这样调用它们),否则它们被认为是指目录中的文件

    --旁注:这不一定对应于web服务器用于服务文件的文件系统路径(如果有)类型。大多数web服务器在被要求将URL映射到其文件系统上的某个目录时,都会在目录中提供具有某个设置名称的文件(通常为index.html,但通常可以配置该选项),或者提供由服务器生成的html目录列表(如果禁用了该选项,则会出现访问错误)。当请求不带尾随斜杠的类似路径的“文件URL”时,通常会提供相同的服务,在这种情况下,“文件URL”实际上映射到目录文件系统路径。--

    这可能会导致不一致,如上面的示例,其中“文件URL”
    可能与“目录URL”
    等效,但相对链接可能指向这两个URL的不同路径,一个可能工作,另一个可能断开


    因此,当链接到目录时,建议始终使用“目录URL”(带终止斜杠),而不是等效的“文件URL”-例如链接到
    ,而不是
    ,即使两者都服务于同一页面。事实上,许多web服务器配置为使用HTTP 301重定向响应将请求后者的客户端重定向到前者。如果您在浏览器的URL栏中输入后者,您可以看到这一点-一旦收到响应,URL栏将变为前者。

    谢谢,Brilliant,非常感谢Tom,您已经为我清除了一切,我祝您一切顺利,现在我可以完成我的项目:)