Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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_Replace - Fatal编程技术网

在url的末尾斜杠

在url的末尾斜杠,url,replace,Url,Replace,我认为(如果我错了,请纠正我),最好在url的大部分末尾加一个/。像这样: 而不是放在文件名的末尾: 我必须纠正这一点,在一个有很多链接的网站。有没有一种方法可以让我快速做到这一点。例如,在一些程序中,如Dreamweaver,我可以使用查找和替换 第二种情况在Dreamweaver中非常简单: -查找:.html/“ -替换:.html“ 但我怎么能说这样的话: -查找:以目录结尾的所有链接。像 -替换:相同的链接,但末尾带有/。与类似,您的方法可能有效,但它基于所有文件都有文件扩展名的假设

我认为(如果我错了,请纠正我),最好在url的大部分末尾加一个/。像这样:

而不是放在文件名的末尾:

我必须纠正这一点,在一个有很多链接的网站。有没有一种方法可以让我快速做到这一点。例如,在一些程序中,如Dreamweaver,我可以使用查找和替换

第二种情况在Dreamweaver中非常简单:
-查找:.html/“
-替换:.html“

但我怎么能说这样的话:
-查找:以目录结尾的所有链接。像
-替换:相同的链接,但末尾带有/。与

类似,您的方法可能有效,但它基于所有文件都有文件扩展名的假设

URL
http://www.myweb/file
http://www.myweb/file/
因为后者可以解析为
http://www.myweb/file/index.php
,或在web服务器中配置的默认设置中的任何其他设置。该URL还可以引用一个完全有效的文件,该文件不包含文件扩展名,例如它是REST端点

因此,如果您引用的是目录,例如,如果您希望web服务器查找正确的索引页以作出响应,或者执行目录列表,那么您应该显式地添加“/”

若要替换不正确的URL,请选择您的朋友

要查找所有带有错误“/”的文件,可以使用
/\(html | php | jpg | png)\/
,在管道分隔列表中添加任意多个不同的文件扩展名。然后,根据您的工具,您可以将其替换为
$1
\1

使用Perl执行此操作的示例如下:

perl -pi -e 's/\.(html|php|jpg|png)\//.\1/g' theFileYouWantToCheck.html
当然(如果您使用的是基于Linux的系统),您可以通过
find

find path/to/html/root -type f -name "*.html* | xargs perl -pi -e 's/\.(html|php|jpg|png)\//.\1/g'
它将查找目录中的所有html文件,并进行内联查找和替换。假设您使用的是版本控制,那么很容易看到所应用的更改:)

更新 解决向目录中添加斜杠的问题并非易事。我将采取的方法是:

  • 编写一个脚本,在本地递归浏览您的网站结构,列出所有文件
  • 解析HTML文件以提取所有
    href=“.*”
    ,并仅当URL结尾不在由第一个脚本提取的列表中时,将其替换为
    href=“.*/”

任何基于文本的查找和替换都不会知道链接是否实际指向文件。

您可以使用正则表达式并在URL中搜索
,编写某种生成器来搜索模式并替换它们。我总是这样做来替换整个工作区中的模式。不能保证文件名包含
和/或目录名不包含。除非您知道实际的文件系统结构,否则无法在URL中区分它们。@Damien_不相信您必须以递归方式扫描文件。然后您可以查找
href=
或其他内容,并将其替换为所需的值。也许我没有解释清楚。请看我更新的问题。