【问题标题】:Hide dynamic URL directory隐藏动态 URL 目录
【发布时间】:2014-08-06 14:16:44
【问题描述】:

我的请求看起来很熟悉,但有一个技巧:)
我们有一个网站,可以重定向到每天为主页内容创建的文件夹。

website.com/static-folder/dd-mmm-yyyy/index.html

所以,website.com 会转到上面的 URL 以及今天的日期。

我们怎样才能始终从 URL 中隐藏目录,而只显示域名?

website.com

我知道使用 mod_rewrite 可以完成这项工作,但不知道动态更改日期文件夹的代码。

RewriteCond %{HTTP_HOST} ^(www.)?website.com$
RewriteCond %{REQUEST_URI} !^/static-folder/dd-mmm-yyyy/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /static-folder/dd-mmm-yyyy/$1

RewriteCond %{HTTP_HOST} ^(www.)?website.com$
RewriteRule ^(/)?$ /index.html [L]

谢谢,

【问题讨论】:

  • 谢谢@CBroe,但这不起作用。我收到(500 Internal Server Error 错误)并且我已经编辑了上面的问题,因为该文件夹以 3 个字母格式表示月份(Jan、Dec、...)

标签: .htaccess url mod-rewrite dynamic hide


【解决方案1】:

您可以为此使用description of RewriteCond 中列出的环境变量——在那里您会找到TIME_DAY、TIME_MON 和TIME_YEAR。前两个是两位数长度(适用时以零为前缀),第三个是四位数字。

您可以直接在 RewriteRule 替换中使用它们,例如

RewriteRule ^(.*)$ /static-folder/{TIME_DAY}-%{TIME_MON}-%{TIME_YEAR}/$1

应该适用于您的情况。

不确定,您是否可以在您已经拥有的第二个RewriteCond 中使用它们,在右侧进行比较。但是您的条件 #3 和 #4 应该已经足以在此处停止重写,因为一旦请求已被重写到现有的当天文件夹,!-f resp。 !-d 应该已经知道了。

【讨论】:

  • 我收到(500 内部服务器错误错误)并且我已经编辑了上面的问题,因为该文件夹以 3 个字母格式表示月份(1 月、12 月、...)
  • 有没有办法将 /static-folder/dd-mmm-yyyy/ 保存到变量中并添加到 RewriteRule 中?
  • 我现在想不到任何简单的方法——毕竟,这必须在重写开始之前发生。好吧,当然您可以每天更新您的.htaccess 文件——但这似乎不是一个非常顺利的解决方案……也许最好在创建这些日常文件夹时解决这个问题 已经(通过设置一个简单的符号链接始终指向当前文件夹或其他东西)。
猜你喜欢
  • 1970-01-01
  • 2016-06-26
  • 2016-08-08
  • 1970-01-01
  • 2017-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多