nginx+之后的Silex子目录路由;lighttpd&x2B;重写
我有以下设置:一个带有mod_fcgi for PHP的lighttpd服务器,位于一个充当反向代理的nginx服务器后面。lighttpd根目录映射到nginx的“我的工具”子目录。我可以在lighttpd配置中添加重写规则,但不能触摸nginx 我在lighttpd配置中定义了以下规则:nginx+之后的Silex子目录路由;lighttpd&x2B;重写,nginx,routing,reverse-proxy,lighttpd,silex,Nginx,Routing,Reverse Proxy,Lighttpd,Silex,我有以下设置:一个带有mod_fcgi for PHP的lighttpd服务器,位于一个充当反向代理的nginx服务器后面。lighttpd根目录映射到nginx的“我的工具”子目录。我可以在lighttpd配置中添加重写规则,但不能触摸nginx 我在lighttpd配置中定义了以下规则: url.rewrite-once += ( "^/my-tool(/[^\?]*)(\?.*)?" => "/index.php$1$2" ) 当我请求路径http://example.co
url.rewrite-once += (
"^/my-tool(/[^\?]*)(\?.*)?" => "/index.php$1$2"
)
当我请求路径http://example.com/my-tool/bar
在浏览器中,Silex抛出一个NotFoundHttpException
,因为它找不到/my tool/bar
——但请求的路由应该是/bar
删除/my tool
前缀的最佳/最标准方法是什么?我可以在lighttpd配置中完成吗?我是否必须子类化Symfony\Component\HttpFoundation\Request
才能在getInfoPath
中使用$\u服务器['PATH\u INFO']
?或者在初始化Silex之前,我是否使用一个“肮脏的黑客”并将其从$\u服务器['HTTP\u X\u ORIGINAL\u URI']
变量中删除
以下是来自$\u服务器的相关变量:
[ORIG_PATH_TRANSLATED] => /data/project/my-tool/public_html/bar
[ORIG_SCRIPT_FILENAME] => /data/project/my-tool/public_html/index.php/bar
[HTTP_X_ORIGINAL_URI] => /my-tool/bar
[REDIRECT_URI] => /index.php/bar
[REQUEST_URI] => /my-tool/bar
[DOCUMENT_ROOT] => /data/project/my-tool/public_html
[SCRIPT_FILENAME] => /data/project/my-tool/public_html/index.php
[PATH_TRANSLATED] => /data/project/my-tool/public_html/bar
[PATH_INFO] => /bar
[SCRIPT_NAME] => /index.php
[PHP_SELF] => /index.php/bar
您需要在相对URL端包含index.php
的完整路径,例如:
url.rewrite-once += (
"^/my-tool(/.*)" => "/my-tool/index.php$1"
)
您需要在相对URL端包含index.php
的完整路径,例如:
url.rewrite-once += (
"^/my-tool(/.*)" => "/my-tool/index.php$1"
)
你搞清楚了吗?您是否有机会尝试在Wikimedia工具实验室中配置工具?;)你搞清楚了吗?您是否有机会尝试在Wikimedia工具实验室中配置工具?;)