我有一个mod_rewrite规则传递请求到前端控制器,但我似乎无法得到它没有[R]标志的工作。
设置不是完全简单,我有一个Web根目录内的别名目录,我试图重写到该目录。 如果我忽略那个目录,我可以把它重写得很好。
如果我使用:
Alias /main /some/path/ RewriteEngine on RewriteCond $1 !^(index\.php|images|css|js|robots\.txt) RewriteRule /main/(.*)$ /main/index.php/$1 [R]
它按预期工作,并且index.php接收值作为参数,但是因为它使用了[R]标志,所以/main/some-param的请求以/main/index.php/some-param结尾的URI结束我想要让它透明。
如果没有[R] ,请求将产生一个404,并且沿着File does not exist: /mywebroot/main行的日志条目File does not exist: /mywebroot/main ,这看起来很奇怪。
在这里有没有关于使用Alias任何事情,或者是规则本身的错误?
这是导致问题的Alias – 重写的版本被假定为实际文件的path(绝对文件系统path或相对于DocumentRootpath)。 如果添加PT标志,则Alias将被正确应用。