我不熟悉Apache mod_rewrite并且我必须将所有请求作为GET参数传递给PHP页面(例如。index.php?_REQUEST=$
),它将检查它们并根据a重定向到正确的位置。用INI文件写的设置。
重写必须排除某些目录(访问是直接的):
admin/
api/
bin/cmd/
(但不是bin
)我怎样才能在.htaccess中执行此操作?
是否可以将请求传递给环境变量($_ENV
)而不是GET变量?
答案 0 :(得分:1)
在文档根目录中的.htaccess文件中尝试以下操作:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/index\.php
RewriteRule !^(admin|api|bin/cmd)/ /index.php [L]
当请求未以/index.php
,/admin/
等开头且尚未/api/
时,此会在内部重写至/index.php
(防止重写循环)。然后通过PHP变量$_SERVER['REQUEST_URI']
访问请求。
RewriteCond%{REQUEST_URI}!^ admin
此行的问题(来自您的评论)是%{REQUEST_URI}
始终以斜杠开头,因此永远不会匹配,因此以下RewriteRule
总是重写请求。