2015-10-15 111 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]