.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 RewriteRule 到路径而不更改 URL