Apache Mod Rewrite - 用www / example.com替换www.example.com

时间:2013-04-14 20:21:20

标签: apache mod-rewrite

首先我已经有用的东西......

在我的服务器上,我使用停放的域,其中每个域指向同一目录,并且软件仅在从类似的命名数据库中提取之前确定域是什么。对于文件(图像,脚本等),我目前有以下设置...

  

的public_html / www.example1.com /

     

的public_html / www.example2.com /

     

的public_html / www.example2.com /

...使用以下重写...

RewriteCond %{REQUEST_URI} !\.(gif|jpg|js|mp3|png)$
RewriteRule ^[^/]*/(images|search|scripts|sounds)(.+) $1$2 [QSA]

所以在示例中,如果您从 example2.com 请求 image77.png ,Apache会将(内部)请求重写为...

  

的public_html / www.example2.com /图像/ image77.png

外部路径(在浏览器中)只显示为...

http://www.example2.com/images/image77.png

其次,我试图解决的问题......

然而,随着我添加更多域名,这开始挤占我的* public_html / *目录。我尝试做的只是将所有域资产目录移动到如下所示的目录设置中......

  

的public_html /网络/

...所以www目录会有以下列表...

  

的public_html /网络/ example1.com /

     

的public_html /网络/ example2.com /

     

的public_html /网络/ example2.com /


最后,我对如何解决问题的看法......

第一个Apache变量$1是从%{REQUEST_URI}生成的。如果我们可以简单地取代期间。在 www 和域名之间,这应该将重写更新为更新的格式,虽然我不知道如何做到并保持已经完成的工作?

换句话说,我们可以创建一个重写条件,用斜杠替换第一个句点吗?

1 个答案:

答案 0 :(得分:0)

您可以在www.之后捕获域部分,稍后在RewriteRule中将其用作%1

RewriteCond %{HTTP_HOST} ^www\.(.+)$
RewriteRule ^.*?/(.*)$ /public_html/www/%1/$1 [L]