在重写的URL上使用.htaccess

时间:2014-05-22 03:28:13

标签: php .htaccess mod-rewrite redirect

我正在使用.htacces文件进行某些页面缓存。我有一个主人.htaccess,它位于我的doc根目录中,这个htaccess将所有内容重定向到PHP路由器。然后路由器提供给定URL的内容。

但是,对于我正在使用URL的页面是动态的,取决于用户名。

网址可能如下所示:

http://example.com/username/custom-page

提供给该网址的内容存在于:

http://example.com/content/custom-page/

但是,我注意到当我将.htaccess文件放在提供文件的目录中时,它没有任何效果。

此外,由于网址是动态的,因此很难为该网页使用个人.htaccess。

无论如何,我正试着写这个.htaccess,就像这样:

$parent = $_SERVER['DOCUMENT_ROOT'].'/content/custom-page/.htaccess'; 

  if (!is_file($parent)){
    $noCache = '<FilesMatch "\.(.*)$">
      FileETag None
      <IfModule mod_headers.c>
      Header unset ETag
      Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
      Header set Pragma "no-cache"
      Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
      </IfModule>
      </FilesMatch>';

    $file = fopen($parent, "w");
    if (!$file) die("error writing to parent directory");

    fwrite($file, $noCache);
    fclose($file);
    }
else {
    echo "no htaccess";
}

我正在接受“没有htaccess”。我想知道我应该怎么处理它。我真的不想在主人.htaccess上设置最大年龄标题。

1 个答案:

答案 0 :(得分:0)

你有一个简单的逻辑错误。

  if (!is_file($parent)){

请注意,如果文件不存在,则执行代码;如果文件存在,则回显“no htaccess”!

我不确定你为什么要进行这项检查,因为如果文件存在,你只是覆盖它。

当然,以这种方式编写.htaccess可能不会产生你想要的效果,但这是一个完全不同的问题。