我想发球
http://172.16.0.2/container/app.html/any/path/here
由app.html
这是一个现有资源。
另外,我希望index.html
能够提供所有没有任何结束延伸的路径。即:http://172.16.0.2/container/path/randomly/written
这是我的规则:
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteRule ^[^.]{1}(?!<\.)[^.]{1,}$ index.html [L]
RewriteRule ^app.html$ - [L]
RewriteRule ^app.html(.*)$ app.html [L]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule - [L]
app.html
投放index.html
投放index.html/path/pathpath
投放(index.html)index.html/path/pathpath.EXT
有效(404)BUT
app.html/a/path
生成404错误。根本没有任何线索,有人能解释我为什么吗?
日志
172.16.0.1 - - [27/Jul/2016:10:44:40 +0000] [172.16.0.2/sid#7fc44d87d4c0][rid#7fc44dbd10b8/initial] (3) [perdir /var/www/html/applications/container/web/] add path info postfix: /var/www/html/applications/container/web/app.html -> /var/www/html/applications/container/web/app.html/sdf/sdf
172.16.0.1 - - [27/Jul/2016:10:44:40 +0000] [172.16.0.2/sid#7fc44d87d4c0][rid#7fc44dbd10b8/initial] (3) [perdir /var/www/html/applications/container/web/] strip per-dir prefix: /var/www/html/applications/container/web/app.html/sdf/sdf -> app.html/sdf/sdf
172.16.0.1 - - [27/Jul/2016:10:44:40 +0000] [172.16.0.2/sid#7fc44d87d4c0][rid#7fc44dbd10b8/initial] (3) [perdir /var/www/html/applications/container/web/] applying pattern '^app.html(.*)$' to uri 'app.html/sdf/sdf'
172.16.0.1 - - [27/Jul/2016:10:44:40 +0000] [172.16.0.2/sid#7fc44d87d4c0][rid#7fc44dbd10b8/initial] (2) [perdir /var/www/html/applications/container/web/] rewrite 'app.html/sdf/sdf' -> 'app.html'
172.16.0.1 - - [27/Jul/2016:10:44:40 +0000] [172.16.0.2/sid#7fc44d87d4c0][rid#7fc44dbd10b8/initial] (3) [perdir /var/www/html/applications/container/web/] add per-dir prefix: app.html -> /var/www/html/applications/container/web/app.html
172.16.0.1 - - [27/Jul/2016:10:44:40 +0000] [172.16.0.2/sid#7fc44d87d4c0][rid#7fc44dbd10b8/initial] (1) [perdir /var/www/html/applications/container/web/] initial URL equal rewritten URL: /var/www/html/applications/container/web/app.html [IGNORING REWRITE]
答案 0 :(得分:0)
问题是这些规则被设置为<Directory>
指令,在RewriteRule
指令之前设置的先前<Directory>
之后直接进入<VirtualHost>
指令。 / p>
根据documentation,如果我在其中设置RewriteRule
,我只能通过指定网址来重写。不过,我是通过考虑物理路径来指定的。
指定资源的文件系统上的位置 交付给客户。替换仅被视为a 在服务器(virtualhost)中配置规则时的文件系统路径 上下文和替换中路径的第一个组成部分是 存在于文件系统
中
两种解决方案:
<Directory>
指令之外,以便通过apache将替换视为物理路径