使用htaccess将文件URL重写为不同的文件?

时间:2013-07-25 12:02:28

标签: wordpress .htaccess mod-rewrite

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

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

有什么方法可以实现这个目标吗?

感谢。

1 个答案:

答案 0 :(得分:1)

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

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

  • 此标题可以欺骗
  • 在某些情况下,它仍然设置
  • 使用开发人员工具,在查看请求时仍然可以看到

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

  • 使用开发人员工具,在查看请求时仍然可以看到

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


您使用的语法无效。有关详细信息,请参阅the documentation。该模式不能以/开头,并且不包含查询字符串。你的rewriterule看起来像:

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

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