.htaccess 保留页面而不更改站点 URL

Posted

技术标签:

【中文标题】.htaccess 保留页面而不更改站点 URL【英文标题】:.htaccess holding page without changing site URL 【发布时间】:2018-02-12 11:33:20 【问题描述】:

如果我有一个站点 mysite.com 并且在站点的根目录中我有一个 /holding/index.html 文件,我如何编写我的 .htaccess 来显示持有页面的索引而不显示 URL @987654323地址栏中的@。

这是我的目录结构:

public_html
└── .htaccess
└── holding
    └── index.html
    └── assets (css, img)
└── email-signature
    └── assets (img)

我的 .htaccess 目前是:

RewriteEngine On
RewriteCond %REQUEST_URI !^/email-signature/assets/logo.jpg$
RewriteCond %REQUEST_URI !^/email-signature/assets/spacer.gif$
RewriteCond %REQUEST_URI !^/holding/(.)*$ [NC]
RewriteRule ^(.*)$ /holding/ [R=302,L]

但这会在地址栏中显示mysite.com/holding/...我希望它保持为mysite.com,但仍显示持有页面索引。这可能吗?

电子邮件签名资产需要可通过mysite.com/email-signature/assets/... 访问(我还希望不必指定.htaccess 中的每个文件,而只需将email-signature/* 中的所有jpg、png、gif 文件都指定为可访问)。

提前致谢。

【问题讨论】:

删除R=302并清除浏览器缓存 @anubhava 有帮助,页面现在正在显示,但我不能使用相对路径(“dist/css/styles.css”)在我的 html 中引用我的资产,所以样式表和图像被破坏。无需编写“example.com/holding/dist/css/styles.css”即可正确检索 css 文件? 为此,请在页面 HTML 的 <head> 部分下方添加:<base href="/" /> 很好,谢谢。虽然我不得不将它设置为<base href="/holding/" /> 【参考方案1】:

您可以将您的规则重构为:

RewriteEngine On

RewriteCond %REQUEST_URI !^/email-signature/ [NC]
RewriteRule !^holding/ /holding/ [NC,L]
删除R=3xx 标志以避免外部重定向 在页面 HTML 部分的下方添加:<base href="/holding/" /> 以解析 css/js/images 等的相对路径。

【讨论】:

以上是关于.htaccess 保留页面而不更改站点 URL的主要内容,如果未能解决你的问题,请参考以下文章

使用 htaccess 重定向页面,但保留 URL 结构并仅更改域

.htaccess 重定向而不更改地址栏

.htaccess RewriteRule 到路径而不更改 URL

使用 htaccess 重定向子域而不更改地址栏中的 URL

发布页面显示子页面而不更改 URL

.htaccess 将域重定向到子目录而不更改 URL