是否有可能使用.htaccess文件来重写这个:
http://customer1.com/app/assets/css
进入这个:
http://customer1.com/app/customers/customer1/assets/css ?
如果是那么如何?
编辑:目标是避免任何更新.htaccess添加新客户时EDIT2:
我看到我的问题太模糊了。 我有一个用于许多不同客户的CMS(www.foo.com,www.bar.com,www.somerandomname.com)。 每个客户在目录/ data / www / cms / customers / XXXXXX /中都有唯一的文件(devise,上传),其中XXXXXX是客户的名称。 Apacheconfiguration文件在/ data / www / cms /上设置了默认DocumentRoot。
我想要做的是让URL http://www.foo.com/app/assets/css/bg.png从给定的客户数据目录,即/ data / www / cms /应用程序/客户/ foo.com /资产/ CSS / bg.png。
我不知道.htaccess文件,但我很确定这将工作:
RewriteEngine On RewriteCond %{HTTP_HOST} customer([0-9]+)\.com RewriteRule ^/app/(.*) /app/customers/customer%1/$1 [QSA]
说明:
RewriteCond %{HTTP_HOST} customer([0-9]+)\.com
将variables' %1 '放入客户编号即' 1 '
RewriteRule ^/app/(.*) /app/customers/customer%1/$1 [QSA]
意思是:如果path以' /app/ ' 开始 ,然后将其重写到/app/customers/customer并添加variables' %1 '(在我们的例子中是' 1 '),所以它应该与你要求的:重写为http://customer1.com/app/customers/customer1/ 。
我很抱歉,但是你的问题并不十分确切,你应该提供更多的例子,或者更具体地说明你想做什么,但是我尽了最大的努力去帮助你。
你也可以使用RewriteMap指令。 想象一下,你把所有的客户网站和正确的目录放在里面,像这样:
alsace 1 aquitaine 2 auvergne 3 basse-normandie 4 bourgogne 5 bretagne 6 centre 7 champagne-ardenne 8 corse 9 franche-comte 10 haute-normandie 11
那么我使用这样的RewriteRule:
RewriteMap mapregions dbm:/web/htdocs/maps/regions.map RewriteRule ^/region/(.*)/$ /handle_regions.php \ [NC,E=REGION:${mapregions:$1|notfound}]
所以它基本上是这样做的:如果你要求一个像/region/(.*)/这样的URL,它会redirect到/handle_regions.php并设置一个环境variablesREGION然后我只是检查它是否被find:如果没有,我停止:
RewriteCond %{ENV:REGION} notfound # "not found" = 404 : RewriteRule .* - [R=404,L]
然后你在这里。 对不起,但是我刚刚说的所有的事情,你有足够的材料来解决你的问题。 我没有时间为你做所有的事情,对不起的人,我尽我所能帮助你…我希望这有助于!
这将是这样的:
RewriteEngine On RewriteCond %{http_host} !^customer1\.com\/app\/$ RewriteRule ^/?(.*)$ http://customer1.com/app/customers/customer1/$1