javascript,如何获取url路径?
我想通过javascript获取url路径,javascript,如何获取url路径?,javascript,Javascript,我想通过javascript获取url路径, 例如,我有以下URL: http://localhost:8080/blah/blah/index.php?p=1 http://localhost:8080/blah/blah/index.php http://localhost:8080/blah/blah/ http://localhost:8080/blah/blah 我想得到:http://localhost:8080/blah/blah/ 任何人请帮助我这似乎是一个模棱两可的问题
例如,我有以下URL:
http://localhost:8080/blah/blah/index.php?p=1
http://localhost:8080/blah/blah/index.php
http://localhost:8080/blah/blah/
http://localhost:8080/blah/blah
我想得到:http://localhost:8080/blah/blah/
任何人请帮助我这似乎是一个模棱两可的问题,没有明确的解决方案,因为没有具体定义要从URL末尾删除什么 删除查询参数很容易(第一个示例) 很容易规范化尾部斜杠(最后两个示例) 如果您一直想要删除路径的最后一部分,那么很容易删除它,但是除非您愿意添加更多的规则,以便在URL末尾区分
/index.php
和/blah
,以便算法知道何时删除一个,而不是另一个,否则您所要求的是不可能的。由于您已经定义了问题,代码无法知道
http://localhost:8080/blah/blah
是否应删除
例如,这段代码将删除查询参数和URL的最后一部分,但这只适用于四个示例中的三个,但最终会遇到关于要删除的内容的歧义:
function cleanURL(url) {
return(url.replace(/\?.*$/, "").replace(/\/[^\/]*$/, "") + "/");
}
在这里,它将在您的四个示例上运行:。它将返回以下四种情况的结果:
http://localhost:8080/blah/blah/
http://localhost:8080/blah/blah/
http://localhost:8080/blah/blah/
http://localhost:8080/blah/
对于最后一个URL,您可以看到算法在末尾将/blah
标识为文件名并将其删除,因为无法知道这是路径的一部分还是文件名
如果您愿意制定一个新规则,即文件名必须具有文件扩展名,并且没有文件名时路径名的最后一部分永远不会具有扩展名,那么可以编写这样的算法来处理最后一种情况
好的,根据一条新规则,文件名的结尾是任何带有句点的内容,然后,您可以使用以下内容:
function cleanURL(url) {
return(url.replace(/\?.*$/, "")
.replace(/\/[^\/]*\.[^\/]*$/, "")
.replace(/\/$/, "") + "/");
}
它显示在这个fiddle:中,并为四个测试URL生成以下结果:
http://localhost:8080/blah/blah/
http://localhost:8080/blah/blah/
http://localhost:8080/blah/blah/
http://localhost:8080/blah/blah/
我添加了一个实际的代码示例和一个JSFIDLE,在实际操作中显示了它。如果是rite,我们可以通过url末尾的“点”知道它是文件名。无论如何,谢谢jfriend,你的回答非常有用OK,问题是当我们访问localhost:8080/blah/时,它将与localhost:8080/blah/index.php(默认文档)相同,也与localhost:8080相同,这就是重点。它的实际路径是localhost:8080/blah/index.php,但是当我们访问localhost:8080/blah/apache时,我们知道index.php文件是将要执行的默认文件。所以我们不知道,当有人键入localhost:8080/blah或localhost:8080/blah/或localhost:8080/blah/index.php时,我想获取根url以加载其他文件。可能是