使用htaccess重写使子目录成为root相对路径请求的自己的根目录

时间:2010-06-05 21:35:50

标签: html url .htaccess mod-rewrite subdirectory

我可以使用htaccess捕获来自某个子目录的请求,并使该目录将自己用作任何根相对路径请求的根目录吗?例如,如果我有......

http://www.example.com/subFIXED/subANY/restofpath

...其中subFIXED始终是同一个目录,subANY是subFIXED的任何直接子目录,我希望从subany下的任何文件重定向所有href / src请求,以使用subANY作为'root'(有点像实际上,根级别请求使用此作为根目录级别:

http://www.example.com/subFIXED/subANY/

而不是:

http://www.example.com/

我假设我可以在subFIXED中放置一个htaccess文件来处理来自任何subany下的任何内容的所有调用,但是不熟悉htaccess重写,变量等,我无法弄清楚如何捕获哪个subANY目录正在发出根级别请求,然后使用该捕获进行重写,以便将该目录视为任何根相对路径的根级别从其请求。

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

Euhm,.htaccess?它必须依赖极其不可靠的HTTP_REFERER,不用了。

添加< base> HTML&中的元素完成。 http://www.w3schools.com/tags/tag_base.asp


编辑:相对于root(“/ foo”)也应该考虑,因此在使用< base>修复相对路径之后:

.htaccess(非常不可靠,因为切换子路径几乎不可能,而HTTP_REFERER非常不可靠。简而言之:不要使用)

RewriteCond %{HTTP_REFERER} ^.*://[^/]+/subFIXED/([^/]+)/
RewriteCond %{REQUEST_URI}  !^/subFIXED
RewriteRule ^(.*)$ /subFIXED/%1/$1 [R=301,L,QSA] //drop the R=301 if POSTing, but url will not show the 'correct' one in that case

缺陷:

  1. POST很尴尬(无法重定向和保留POST,因此必须正常登陆',这将使后续请求中的REFERER无用/ false
  2. 通常不会发送推荐人
  3. 发送REFERER时,无法从任何其他'subAny'切换到其他'subAny'
  4. 更可行的解决方案:

    1. 使用服务器上的脚本对每个请求进行后处理,为每个以'/'开头的引用(href / src)添加一个点(。)。
    2. 上一个可以使用客户端javascript完成,但这不是值得推荐的,因为searchbots&的所有链接都是如此。禁用js的浏览器会中断
    3. 制作一个实际的子域名,这只是一个麻烦。
    4. 简而言之,除了制作实际的子域名外,没有理想的解决方案。你需要解决的确切问题是什么,你需要这个'固定的rootpath'解决方案?可能还有其他人不会那么麻烦。