2015-10-15 74 views
0

作为示例,我正在访问项目foo,地址为https://localhost/projects/foo/dev/Apache别名/重写到子目录而不重定向

我想重写URL,以便https://localhost/projects/foo/projects/foo/dev/在我的DocumentRoot文件夹

这应该是HTTP重定向3XX。此外,dev1,dev2等不应该是可访问的(除非dev内有目录,但这不太可能)。当然,路径和查询字符串和片段的其余部分需要保留,比如:

projects/foo/dev/assets/js/jquery.min.js -> https://localhost/projects/foo/assets/js/jquery.min.js 

这是我的DocumentRoot文件夹我的目录结构:

  • 项目/
    • 富/
      • 开发/
      • DEV1/
      • DEV2/
      • DEV3/
    • 酒吧/
      • 开发/
      • DEV1/
      • DEV2/
    • 等等...

我试过在this question中发布的答案,但即使重新启动Apache后它也不起作用。

我也试过这似乎正确的,但给我的HTTP 500的一些无限的error.log重定向错误:

RewriteEngine on 
RewriteRule ^(.*)$ src/$1 [L,QSA] 

我只有每个项目目录内的访问(例如foobar)和在其他机器上可能不会调用父目录projects。因此,这需要在htaccess文件而不是httpd.conf中完成。

回答

0

您可以在projects/.htaccess使用:

RewriteEngine on 
RewriteCond $2 !^dev/ [NC] 
RewriteRule ^(foo|bar)/(.*)$ $1/dev/$2 [NC,L] 

或者每个目录projects/(不仅foobar):

RewriteEngine on 
RewriteCond $2 !^dev/ [NC] 
RewriteRule ^([^/]+)/(.*)$ $1/dev/$2 [L]