到子目录的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