提问人:user129393192 提问时间:8/1/2023 更新时间:8/2/2023 访问量:38
如何在路径中不以 index.html 开头的情况下使导航工作?
how to make navigation work without starting with index.html in path?
问:
我有一个 apache2 Web 服务器,位于 .端点是并且是大学附属和管理的。我的根应该是,它由主服务器代理。/var/www/html
xyz.com
xyz.com/name
当我有:
# index.html
link to href='other.html'
# other.html
link to href='./'
在 中,仅当用户从 (用户正确路由到 );否则,如果用户开始于 那么他们就会被路由到(不存在)。var/www/html
xyz.com/name/index.html
xyz.com/name/other.html
xyz.com/name
xyz.com/other.html
我该如何解决这个问题?(首选 HTML + 服务器配置)
答:
当您没有尾部斜杠时,会出现此问题。
xyz.com/name/
通常,带尾部斜杠的目录是没有尾部斜杠的目录
,通常是一个文件xyz.com/name
相对链接来自将相对于根目录进行解析,因为假定是根目录中的文件。这不仅会破坏锚点,还会破坏图像和样式表链接。xyz.com/name
xyz.com/
name
如果是目录,则某些服务器会自动重定向到 。由于您的没有,您可以将其设置为这样做(通过根 Web 目录中的文件直接在服务器上或通过根 Web 目录中的文件)。这将防止上述链接问题,并防止来自两个 URL 的重复内容(SEO 问题)。name
name/
httpd.conf
.htaccess
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/])$ /$1/ [L,R=301]
更多信息和解释可以在文章“你应该在 URL 的末尾有一个尾部斜杠吗?”中找到,也可以通过对 URL 中的尾部斜杠进行 Web 搜索来找到。
重定向的替代方法是使用 <base>
HTML 元素,该元素指定要用于文档中所有相对 URL 的基 URL。<head>
注意:这可能会破坏页面内的锚点。使用 on 时,链接指向 。但是,没有必要在每个页面中使用它,只需在 .<base href="/name/">
xyz.com/name/other.html
<a href="#some-id">in-page anchor</a>
xyz.com/name/#some-id
<base>
index.html
评论
.htaccess
/var/www/html
xyz.com/name
xyz.com/name/
xyz.com/name/index.html
other.html
xyz.com/other.html
base
index.html
xyz.com/name/name/other.html
<base href="/name/">
/name/
base
xyz.com/name/other.html
href='./'
xyz.com/name/
href='other.html'
xyz.com/name/name/other.html
上一个:在服务器端从客户端接收数据
评论
name
name/