使用htaccess的重写,使一个子目录是根相对路径请求自己的根(Using htaccess re

2019-09-29 16:13发布

我可以使用htaccess的从某个子目录捕捉请求并创建该目录使用自己为根目录任何根相对路径的请求? 例如,如果我有...

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

...其中subFIXED总是相同的目录,subANY是subFIXED的任何直接子目录,我想从任何文件subANY下的所有HREF / SRC请求使用subANY作为“根”的重定向(有点像一个子域)实际上具有根级别的请求使用此作为根目录级别:

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

取而代之的是:

http://www.example.com/

我假设我可以把一个htaccess文件subFIXED处理任何subANY下从任何未来的所有调用,但不是很熟悉的htaccess重写,变量等,我无法弄清楚如何才能捕获subANY目录使根级别的请求,然后使用捕获做出重写考虑该目录从任何根相对路径请求的根级别。

谢谢你的帮助

Answer 1:

Euhm,htaccess的? 它必须依赖于极不可靠HTTP_REFERER,不,谢谢。

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


编辑:相对于根(“/ foo”的)也应占,所以用<碱>定影相对路径后:

的.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,所以才会有土地“正常”,这将使得在后续请求引荐无用/假
  2. 引用者往往不发送
  3. 从任何其他“subAny”切换到其它“subAny”发送REFERER时是不可能

更可行的解决方案:

  1. 后处理和每个与服务器上的脚本,以“/”开始的每个请求,增加一个点(。)的每一个参考(HREF / SRC)。
  2. 前一个可与客户方的JavaScript来完成,但是这是不推荐,因为停用searchbots和浏览器的各个环节与JS将打破
  3. 做一个实际的子域,这仅仅是一个麻烦。

总之,除了使实际的子域不理想的解决方案。 什么是你正在试图解决,你需要这个“固定ROOTPATH”解决方案的具体问题? 有可能是别人不涉及这么多的麻烦。



文章来源: Using htaccess rewrite to make a subdirectory be its own root for root relative path requests