wordpress 如何将“/home”添加到网站的URL

raogr8fs  于 2024-01-06  发布在  WordPress
关注(0)|答案(1)|浏览(733)

该网站的实际网址是“allenbrookneighbors.org“。
在settings/阅读中,“your homepage display”被设置为“a static page”,“Homepage:“被设置为“Home”。在网站的文件结构中没有“/home”目录。“Home.php”只是一个空白的静态页面;在wp的分层搜索之后,front-page.php会在用户访问网站时加载。
首页上有少量的动态内容引用了“邻居”的话,当页面刷新时会改变,在firefox桌面上运行很好,但在Chrome edge safari甚至firefox移动的上都不行。
我们发现,如果用户将“/home”附加到网站url:“allenbrookneighbors.org/home“并点击{enter},我们可以绕过这些浏览器的本地缓存,每次都获得新的动态数据,但用户不知道这样做。
我们认为我们可以编写一个重定向函数,它只需要在传入的url中添加“/home”修饰符,但是页面无法加载;我们得到一条消息说,“页面没有正确重定向。[浏览器]检测到服务器正在重定向此地址的请求,这种方式永远不会完成。”

add_action('template_redirect', 'redirect_home_url');
function redirect_home_url() {
  if (is_front_page() && !isset($_GET['redirected'])) {
    wp_redirect(home_url('/home'));
    exit;
  }
}

字符串
所以问题是:有没有一种方法可以自动将“/home”添加到地址栏中的url(如果它还没有出现),这样如果用户访问页面的频率超过浏览器本地缓存的过期时间,他们就会看到新的内容?或者,如果用户在阅读内容后按下刷新按钮,他们就会看到新的内容?

gg0vcinb

gg0vcinb1#

我不清楚Home.php的意义。如果你访问<yoursite>/home,它不会加载该文件(除非你有一些有趣的htaccess/服务器配置)。或者你的意思是在你的WP模板中的Home.php静态页面?
你可能会得到无限重定向,因为/home仍然由WP处理,它不知道你想在到达/home时停止重定向。此外,isset($_GET['redirected'])将无法工作,因为该参数未被设置(至少我在这里看不到:https://developer.wordpress.org/reference/functions/wp_redirect/#source)。
所以我猜你至少要用这个来代替:

wp_redirect(home_url('/home?redirected=1'));

字符串
如何配置服务器以“告诉浏览器某些内容应该缓存多长时间.”
这有点依赖于服务器,但原则上你只需要设置响应头,这意味着你也可以在PHP中做这件事(如果你使用PHP来服务资源)。

示例

Header set Cache-Control "max-age=86400, public"

如果将其放入.htaccess中,则所有受影响的资源都应被任何人缓存一天(86400 s => 24小时,public =>任何人)。
*

<FilesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
  Header set Cache-Control "max-age=86400, public"
</FilesMatch>

与之前相同,但仅适用于那些特定的文件扩展名。
*

header('Cache-Control "max-age=86400, public"');

PHP版本。可能对站点Map生成器,动态资产等有用。

刷新该高速缓存

HTTP标准非常灵活,它提供了缓存、无效以及避免缓存的方法。
MDN提供了一些破坏该高速缓存的案例和可能性。详情请参见:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control#caching_static_assets_with_cache_busting
这基本上就是我在这里提到的:如何将“/home”添加到网站的url中

相关问题