在样式表中使用PHP(可能是“.htaccess”问题?)

时间:2018-02-09 作者:Gus Murphy

很抱歉,我问了一个(从我收集的信息中)相对频繁的问题,但我认为我已经把问题复杂化了,因为我离开了一个项目,然后在我的技能变得生疏之后再回来。因此,在我不久前为一位朋友创建的一个非常基本的主题中,我在样式表中使用PHP创建了一些变量,以便可以随机化某些元素的颜色。我实现这一点的方法是命名样式表style.php (与CSS相反),包括<?php header("Content-type: text/css; charset: UTF-8"); ?> 在文件的顶部。

这在当时效果很好,但自从我完成后,我的朋友就不再使用他们的网站了,我决定将这个主题用于我自己的个人网站。我有一个ManagedWP GoDaddy帐户并上传了主题,但现在它不起作用了。这就是我在诊断问题时遇到的问题。对我来说,最明显的问题是,有些东西导致WordPress不再喜欢使用PHP样式表,所以我尝试过的一件事是将样式表重命名为style.css 然后修改.htaccess 将其解析为PHP。修改.htaccess 对我来说是一件新鲜事,所以我可能在那里做了一些愚蠢的事情,但我一直在使用this 文章作为指导,现在.htaccess 在主题的目录中(与style.css) 内容如下:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

<FilesMatch "^.*?style.*?$">
SetHandler php5-script
</FilesMatch>
然而,当WordPress似乎可以很好地使用PHP样式表时,我仍然没有获得与以前相同的结果,我不知道应该问什么样的问题。我有一种感觉,这其中很大一部分是我的倒退,但我不确定该朝哪个方向走!任何帮助都将不胜感激!

3 个回复
SO网友:C C

建议您将所需功能移动到javascript;你是如此严重地试图使这些构造的目的过载。。。即使你让它工作,你的手上也会有一个非常脆弱和难以维护的系统。

请注意,内联风格的想法可能会奏效,但未来的内容安全策略可能会扼杀这种想法。。。内联CSS是一个弱点;看到这个了吗OWASP explanation 了解更多信息。

SO网友:Mark Kaplun

在wordpress生活的这一点上,这只是你不应该做的事情(而且一开始就不应该做)。经验表明,这种CSS文件非常脆弱,当与wordpress相关的服务器设置不是普通的设置时,很容易损坏,这可能适用于所有托管服务。

只需使用wp_head 钩(不,它们不是一个弱点,在未来任何时候都不会被杀死,除非有人想破坏互联网上的所有网站)

*已知此类文件存在安全问题,并且在目录结构更改时会中断

SO网友:MrWhite

(由于某种原因,您似乎有2个WordPress代码块…?!我想这是您问题中的某种复制/粘贴错误?)

现在.htaccess 在主题的目录中(与style.css的目录级别相同)显示为

创建多个.htaccess 不同目录中的文件可能会导致更多问题。(这就是您复制WP前控制器的原因?)您应该将相关指令添加到主.htaccess 文档根目录中的文件,但请注意排序。

有些事情导致WordPress不再喜欢使用PHP样式表:
WordPress似乎可以使用PHP样式表

WordPress本身不应该与CSS/PHP文件有任何关系。然而,您的“ManagedWP”托管可能具有额外的安全性,以防止这些“恶意”(或者更确切地说,非WordPress)PHP文件被解析?

<FilesMatch "^.*?style.*?$">
SetHandler php5-script
</FilesMatch>
将所有仅包含单词“style”的文件作为PHP进行解析可能会导致问题。然而,使用SetHandler 可能非常特定于服务器,因此这可能无论如何都不起作用。

另一种方法是将文件命名为style.php (即使用.php 文件扩展名),但将其引用为style.css 在HTML中。然后,在中使用mod\\u rewrite.htaccess 内部重写请求style.cssstyle.php <在WordPress前控制器之前。

例如:

RewriteRule ^url-path/to/style\\.css$ /filesystem-path/to/style.php [L]
(强调……这必须在WordPress前控制器之前进行。)

结束

相关推荐

通过unctions.php将<meta>标记添加到<head>部分

我已经开发了一个自定义主题,它基本上是一个供客户使用的4页宣传册网站,我通过构建自定义帖子类型(gzip-via)成功删除了一些插件。htaccess和通过gulp等缩小。我会在网站上保留安全插件,但我想删除Yoast,它带来的唯一好处是,考虑到网站的优化程度,它允许我添加meta 用于SEO目的的每个页面的标记和代码片段。是否有一个函数可以添加到我的函数中。允许我添加的php文件<meta> 通过页面id标记到不同页面?当一个人在谷歌上搜索这个主题时,你得到的只是插件文章,或者关于通用wp元