0

First what I have that already works...

On my server I use parked domains where each domain points to the same directory and the software merely determines what the domain is before pulling from the similar named database. For files (images, scripts, etc) I currently have the following setup...

public_html/www.example1.com/

public_html/www.example2.com/

public_html/www.example2.com/

...using the following rewrite...

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

So in example if you request image77.png from example2.com Apache rewrites the (internal) request to...

public_html/www.example2.com/images/image77.png

The external path (in your browser) would simply appear as...

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

Secondly, the problem I'm trying to solve...

However as I add more domains this is starting to crowd my *public_html/* directory. What I'm trying to do is simply move all the domain asset directories in to a directory setup that looks like the following...

public_html/www/

...so the www directory would have the following listing...

public_html/www/example1.com/

public_html/www/example2.com/

public_html/www/example2.com/


Lastly, my thoughts on how to possibly approach the problem...

The first Apache variable $1 is generated from %{REQUEST_URI}. If we can simply replace the period . between www and the domain name this should update the rewrite to the newer format though I'm not sure how to do that and keep what works already in tact?

In other words can we can create a rewrite condition to replace just the first period with a slash?

4

1 回答 1

0

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

RewriteCond %{HTTP_HOST} ^www\.(.+)$
RewriteRule ^.*?/(.*)$ /public_html/www/%1/$1 [L]
于 2013-04-15T06:40:42.727 回答