我必须在某些情况下从主要业务域向客户端域提供公共访问权限。我正在努力让它首先在本地工作(.local.htaccess
),因此只需要帮助本地系统的重写规则。虽然我测试了所有访问方式(192. ,127。等),但这些域不主机(主机为localhost
)。
请求的网址
https://localhost/Version-1.0/www.example1.com/www.example2.com/images/waldo.gif
文件服务器路径
https://localhost/Version-1.0/www.example2.com/images/waldo.gif
.local.htaccess位置
https://localhost/Version-1.0/.local.htaccess
一般代码我一直在修补:
RewriteEngine on
RewriteRule ^[.*/].*/(www.)+/images/(.*)$ $1/images/$2
我使用以下脚本目录(所有规则,但不是images目录)取得了成功(图像目录,即使是空的.htaccess
文件):
RewriteEngine on
RewriteRule ^[^/].*/scripts(.+) scripts$1
答案 0 :(得分:1)
尝试使用此规则作为.local.htaccess
中的第一条规则:
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(Version-1\.0)/www[^/]*/(www[^/]*/\S*)\s
RewriteRule ^ /%1/%2 [L,NE,R=301]
答案 1 :(得分:0)
好的,经过批次的修补后,我能够让重写(而非重定向)工作!
RewriteEngine On
RewriteRule ^.*/(www..*)/images/(.+) $1/images/$2
了解重写
当人们没有真正解释答案时,我讨厌,尤其是当Q& A远非简单时,约翰将解释这是如何工作的。对我来说,关键是可视化 Apache正则表达式的工作原理。下面的图片来自Apache mod_rewrite Introduction。
www.
开头的目录,第二个句点匹配任何字符,并且立即*
再次匹配任何字符(用于动态处理任何具有任何域名的目录)。$2
。 。+ 可以任意次数匹配任何字符(对于此目录中请求的任何文件)。$1
的内容之前丢弃所有。文件名分配给$2
(包括任何子目录)。将(括号)赋值给$1
,$2
等的概念并不困难,它确保正则表达式不仅能够正确匹配,而且还能动态匹配。这方面还需要具有经验的计划(例如,如何组织项目)。