我有一个名为/ weblog的目录。
当您首次在浏览器栏中输入网址(即:my-site / weblog)时,应将该目录重定向到index2.html并设置cookie。
这是我的.htaccess的样子:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /weblog
RewriteRule ^(.*)$ /index2.html?title=$1 [CO=title:$1&weblog:.my-site.nl:0:/]
</IfModule>
这实际上非常有效。首次访问该URL时,它将被重定向到正确的新URL。那里没问题。
但是由于某些原因,您第一次访问网址时未设置cookie:
let cookie = getCookie(); // returns undefined
奇怪的是,重新加载页面后它确实会设置。但是我真的第一次需要Cookie,因为我使用它来加载内容。
可能出什么问题了,我该如何解决?
答案 0 :(得分:0)
在这里进一步挖掘之后,部分找到了我的答案: Cookie not set until a second refresh
显然,在页面的第一次加载中无法访问Cookie。您需要重新加载才能执行此操作。
解决方法:放弃cookie。
我现在使用.htaccess向URL添加一些参数(例如/index2.html?title=$1
)。使用window.location.href
,我从浏览器中检索URL,并使用以下参数获取参数:
let url_string = window.location.href;
let url = new URL(url_string);
var title = url.searchParams.get('title');
// do stuff with title
,并在History API中使用它来将网址更改回其原始格式。类似于:history.pushState(data, null, url_string)
。
它解决了我的问题,但是我不喜欢它在浏览器栏中显示带有参数的url的方式。即使只是一秒钟。
是否可以从.htaccess中“在水下”(对于访问者不可见)检索这些参数?