到子目錄的Apache 2.4,我需要創建下面的規則,並把它在我的虛擬主機文件:阿帕奇重寫例外
- 即成從某個DNS從文件的所有請求在特定目錄 (例子,請求「http://www.mydns.com/login.php」應提供來自subdir「www/subdir/login.php」的文件請求「http://www.mydns.com/a/b/c/some.php」應該從subdir「www/subdir/a/b/c/some.php」提供文件)
- Ignore這個規則對於一些目錄(請求「http://www.mydns.com/cache/myjs.js」應該從「www/cache /」正常服務)
- 如果請求包含的子目錄,無視規則(請求「http://www.mydns.com/subdir/login.php」正常供應)
- 將規則應用到任何端口/協議(HTTP,HTTPS,其他港口像8080)
- 網址不應更改/重定向用戶瀏覽器
我一直在嘗試使用虛擬主機文件內的重寫規則(每個DNS的一個文件),但一直很難與它。
任何幫助是極大的讚賞:)
更新
@spacepickle,感謝您的答覆。仍然沒有去,我可能沒有給出所有需要的細節,所以它在這裏。 我會在下面發佈我的conf文件和測試。
的conf文件:
<VirtualHost *:80>
ServerName my.domain.com
ServerAlias my2.domain.com
DocumentRoot /etc/www
RewriteEngine On
RewriteRule ^/subdir/ - [PT,L]
RewriteRule ^/cache/ - [PT,L]
RewriteRule ^/(.*)$ /subdir/$1 [PT,L]
</VirtualHost>
GET http://my.domain.com。 預計重寫http://my.domain.com/subdir。 得到了fcgi錯誤:在此服務器上找不到請求的URL /subdir/php5.fcgi/subdir/index.php。
GET http://my.domain.com/subdir。 預計什麼都沒發生(忽略重寫)。 得到重寫:在此服務器上未找到請求的URL/subdir/subdir。
GET http://my.domain.com/cache。 預計什麼都沒發生(忽略重寫)。 得到重寫:在此服務器上未找到請求的URL/subdir/cache。
一個測試案例工作: GET http://my.domain.com/clients/tests/index.html。 預期,結果被改寫爲:http://my.domain.com/subdir/clients/tests/index.html
更新的答案與'^重寫規則/子目錄(/.*)? - [PT,L]'和'RewriteRule ^/cache(/.*)? - [PT,L]' - 再試一次? – spacepickle