我们有许多软件都运行在许多differnet服务器上,这些服务器无法访问apache配置。有时我们遇到以下问题:
我们的软件中有一个.htaccess文件,该文件定义了重写规则:
...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
...
将请求重写到当前目录中的index.php。
在某些系统上,这给我们带来了麻烦。到目前为止,我们发现的唯一解决方案是将规则更改为
RewriteRule . <path relative to webroot>/index.php [L]
我不明白为什么会有这个问题,我很想有一个在两个版本中都可以使用的解决方案。
谢谢!
答案 0 :(得分:0)
此行RewriteRule . <path relative to webroot>/index.php [L]
RewriteRule
之后的第一部分是模式,在您的规则中为.
。
第二部分名为Substitution,在您的规则中为<path relative to webroot>/index.php
。
最后一部分是标志,它是规则中的[L]
摘自apache文档:
重写规则的替换是替换与Pattern匹配的原始URL路径的字符串。替代可以是:文件系统路径,URL路径 ,绝对URL或-(破折号)。
https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#rewriterule
因此,根据您的结构,您可以使用满足您需要的结构。