我认为(如果我错了,请纠正我)最好在大多数网址的末尾添加一个/。像这样:http://www.myweb/file/
并且不要将/放在文件名的末尾:http://www.myweb/name.html
我必须在一个有很多链接的网站上纠正这个问题。有没有办法可以快速完成。例如,在像Dreamweaver这样的程序中,我可以使用find和replace。
使用Dreamweaver第二种情况非常简单:
- 查找:.html /“
- 替换:.html“
但我怎么能这样说:
- 查找:以目录结尾的所有链接。像http://www.myweb/file一样
- 替换:相同的链接,但最后有一个/。像http://www.myweb/file/
答案 0 :(得分:1)
您的方法可能有效,但它基于所有文件都有文件扩展名的假设。
网址http://www.myweb/file
和http://www.myweb/file/
之间存在明显差异,因为后者可以解析为http://www.myweb/file/index.php
,或者在您的网络服务器中配置的默认设置中的任何其他网址。该URL还可以引用一个完全有效的文件,该文件不包含文件扩展名,例如它是否为REST端点。
因此,如果您要引用目录,则应明确添加“/”,这是正确的,例如,如果您希望Web服务器查找正确的索引页面以进行响应或执行目录列表。
要替换错误的网址,regular expressions是您的朋友。
要查找所有具有错误“/”的文件,您可以使用/\.(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文件并执行内联查找和替换。假设您正在使用版本控制,那么很容易看到它应用的更改:)
<强>更新强> 解决向目录添加斜杠的问题并非易事。我采取的方法:
href=".*"
,并仅在第一个脚本提取的列表中不存在URL末尾时将其替换为href=".*/"
。任何基于文本的查找和替换都不会知道链接是否实际上是文件。