HTML 将Wordpress链接到主题中的文件 - bloginfo(template_directory);

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTML 将Wordpress链接到主题中的文件 - bloginfo(template_directory);相关的知识,希望对你有一定的参考价值。

<img src="<?php bloginfo('template_directory'); ?>/images/myimage.jpg" />

<!-- which replaces -->

<img src="images/myimage.jpg" />

重写 WordPress 主题文件,将所有内容重定向到 httpd.conf 中的 index.php

【中文标题】重写 WordPress 主题文件,将所有内容重定向到 httpd.conf 中的 index.php【英文标题】:Rewriting WordPress theme files redirecting all content to index.php in httpd.conf 【发布时间】:2012-12-09 10:35:58 【问题描述】:

我在 RHEL6 上使用 WordPress,并进行了一些重写,以便 CSS 托管在 http://servername/css 而不是 http://servername/wp-content/themes/themename/css/

我正在从 Nginx 安装转移到 Apache,并拥有服务器。在这种情况下,我不想使用 htaccess 进行重定向,我只想将它们放在 httpd.conf 中。如果我启用 htaccess 并将其放在那里,一切似乎都可以正常工作。

在我的转换中,我在规则的开头添加了 /。下面的当前代码适用于所有内容,除了未由 css、js、img、字体规则处理的真实文件。例如,实际上托管在 /assets 或其他目录下的东西。我有一种感觉,这是由于 REQUEST_FILENAME,如果有的话,下一条规则缺少斜线 - 但我似乎无法弄清楚。

RewriteRule ^/index\.php$ - [L]
RewriteRule ^/css/(.*) /wp-content/themes/themename/css/$1 [QSA,L]
RewriteRule ^/js/(.*) /wp-content/themes/themename/js/$1 [QSA,L]
RewriteRule ^/img/(.*) /wp-content/themes/themename/img/$1 [QSA,L]
RewriteRule ^/font/(.*) /wp-content/themes/themename/font/$1 [QSA,L]
RewriteRule ^/plugins/(.*) /wp-content/plugins/$1 [QSA,L]
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule . /index.php [L]

如果我尝试访问http://servername/assets/image.png,我实际上正在被重写日志中的/index.php 重写

init rewrite engine with requested uri /assets/311.jpg
applying pattern '^/index\.php$' to uri '/assets/311.jpg'
applying pattern '^/css/(.*)' to uri '/assets/311.jpg'
applying pattern '^/js/(.*)' to uri '/assets/311.jpg'
applying pattern '^/img/(.*)' to uri '/assets/311.jpg'
applying pattern '^/font/(.*)' to uri '/assets/311.jpg'
applying pattern '^/plugins/(.*)' to uri '/assets/311.jpg'
applying pattern '.' to uri '/assets/311.jpg'
RewriteCond: input='/assets/311.jpg' pattern='!-f' => matched
RewriteCond: input='/assets/311.jpg' pattern='!-d' => matched
rewrite '/assets/311.jpg' -> '/index.php'

/assets 是一个包含真实图像的真实文件夹。通过查看此日志,我会认为!-f 应该说'是的,这是一个文件',而不是之后将其传递给 index.php。

【问题讨论】:

也许我遗漏了什么,但您的规则仅适用于 css,js,img,fontplugin。我没有看到 assets 没有规则 没有 - /assets 是一个包含文件的真实目录。我认为 REQUEST_FILENAME 会被认为是一个真实的文件并忽略,而不是发送到 index.php 但不确定这里发生了什么。 尝试在顶部添加RewriteRule ^/assets/ - [L] 这不仅仅是资产目录。它是那些 css、js、img 规则未涵盖的任何静态文件。 我提供的规则有效吗? 【参考方案1】:

经过一番研究和测试,我发现这很容易与htaccess和httpd.conf的范围不同有关,需要包含DOCUMENT_ROOT

如果您在 /var/www/html/test/ 中使用 htaccess,那么您只会在 /test 中查看,因此像 test/assets/image.jpg 这样的东西会通过,因为 /assets/image.jpg 是有效的。

在 httpd.conf 的情况下,除非您在 Directory 指令中使用这些规则,否则您不会被引导到虚拟主机文件夹。因此,就我而言,它正在从服务器的根目录中寻找 /assets/image.jpg。

为了解决这个问题,我只需要在%REQUEST_FILENAME 之前包含%DOCUMENT_ROOT

我在 httpd.conf 中的最后一个块看起来像:

RewriteRule ^/index\.php$ - [L]
RewriteRule ^/css/(.*) /wp-content/themes/themename/css/$1 [QSA,L]
RewriteRule ^/js/(.*) /wp-content/themes/themename/js/$1 [QSA,L]
RewriteRule ^/img/(.*) /wp-content/themes/themename/img/$1 [QSA,L]
RewriteRule ^/font/(.*) /wp-content/themes/themename/font/$1 [QSA,L]
RewriteRule ^/plugins/(.*) /wp-content/plugins/$1 [QSA,L]
RewriteCond %DOCUMENT_ROOT%REQUEST_FILENAME !-f
RewriteCond %DOCUMENT_ROOT%REQUEST_FILENAME !-d
RewriteRule . /index.php [L]

【讨论】:

以上是关于HTML 将Wordpress链接到主题中的文件 - bloginfo(template_directory);的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress主题中的相对图像链接

重写 WordPress 主题文件,将所有内容重定向到 httpd.conf 中的 index.php

Wordpress中的固定链接 - 找不到页面

wordpress默认主题加载不出图片,是哪相关的设置?

做一个WordPress主题需要哪些准备

如何正确链接 wordpress 主题下的引导脚本?