【问题标题】:Apache Mod Rewrite - Replace www.example.com with www/example.comApache Mod Rewrite - 将 www.example.com 替换为 www/example.com
【发布时间】:2013-04-14 20:21:20
【问题描述】:

首先我拥有的已经可以使用了...

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

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/images/image77.png

外部路径(在您的浏览器中)将简单地显示为...

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

其次,我要解决的问题...

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

public_html/www/

...所以 www 目录将具有以下列表...

public_html/www/example1.com/

public_html/www/example2.com/

public_html/www/example2.com/


最后,我对如何解决这个问题的想法......

第一个 Apache 变量 $1 是从 %{REQUEST_URI} 生成的。如果我们可以简单地替换句号。在 www 和域名之间,这应该将重写更新为更新的格式,尽管我不确定如何做到这一点并保持现有的工作原理?

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

【问题讨论】:

    标签: apache mod-rewrite


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-03-16
      • 1970-01-01
      • 2019-09-13
      • 1970-01-01
      • 2019-12-19
      • 2014-03-04
      • 2014-03-04
      • 2019-12-04
      • 2014-06-04
      相关资源
      最近更新 更多