1

我正在尝试隐藏样式表,以便当用户直接从浏览器访问它时,它会显示 404,但会在我的网站上正确显示。这可能吗?我目前正在尝试这个:

RewriteEngine On
Options +FollowSymLinks
RewriteRule ^/?wp-content/themes/mysteam/style.css$ /wp-content/themes/steam/stylesheet.css [L,NC]

有什么办法可以做到这一点?

谢谢。

4

1 回答 1

1

如果您想在至少一页上使用 css 文件,则无法从客户端安全地隐藏它。

如果未设置,您可以使用 referer 标头重定向到 404 页面,但是:

  • 这个标题可以被欺骗
  • 在某些情况下,无论如何它都是设置的
  • 使用开发人员工具,在那里查看请求时仍然可见

您可以设置一个非常智能的系统,该系统将为每个请求生成一个唯一的 id,并且仅当该 id 与当前有权查看该页面的 id 匹配时才显示 css 文件,但是:

  • 使用开发人员工具,在那里查看请求时仍然可见

浏览器请求您的样式表以将样式应用于您的文本,因此始终可以使用该浏览器伪造请求以查看文件的内容(或文件生成的输出),或者更简单,通过查看浏览器需要时的输出。


您使用的语法无效。有关更多信息,请参阅文档。模式不能以 a 开头,/并且不包含查询字符串。你的重写看起来像:

RewriteCond %{QUERY_STRING} ^wp-content/themes/mysteam/style\.css$
RewriteRule ^$ /wp-content/themes/steam/stylesheet.css? [L,NC]

第一行将匹配查询字符串。第二行在?重写部分有一个尾随以清除原始查询字符串。

于 2013-07-25T12:59:27.073 回答