我为已经部署的 php 应用程序提供支持,但它的工作方式对我来说是新的,我不知道它是如何工作的。
基本上,使用类似路径的语法调用 php 方法来检索数据,例如:
<?php
// .....
$json = Request("http://_server/myfolder/abc/default/mymethod?data=something");
// Now $json var has some information.
?>
奇怪的是方法的结构。直到文件夹 'myfolder' 物理路径存在于 linux 'server' 中,您知道“.../apache/htdocs/myfolder/”,但就是这样。除此之外,代码的物理位置位于不同的文件夹结构中,其中default/mymethod根本不匹配任何文件夹。
通过深入挖掘,我发现mymethod对应的 PHP 方法位于:
apache/htdocs/myfolder/protected/modules/abc/controllers/defaultcontroller.php
在 defaultcontroller.php 里面有这样的东西:
<?php
// ....
Class DefaultController {
// ....
Public Function actionmymethod { // Notice the name of mymethod has 'action'
// more code
return $response;
}
}
?>
我 100% 确定在运行请求调用时会触发该方法,但我不知道它是如何完成的。
我的问题是:
这是如何设置的?一定有你相关的地方:
"http://_server/myfolder/abc/default/mymethod" with "actionmethod"
但在哪里以及如何?
我需要制作这个运行的副本,所以我可以用这样的东西来调用我的副本:
"http://_server/FOLDERCOPY/myfolder/abc/default/mymethod"
我已经复制了新结构,但是调用它时,服务器找不到新方法/路径:(
编辑*** 我在位于 /myfolder/ 的 htaccess 中找到了这个
RewriteEngine on
RewriteBase /myfolder/
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule . index.php
我修改了 /FOLDERCOPY/myfolder 中的副本,但它似乎不起作用:(
RewriteEngine on
RewriteBase /FOLDERCOPY/myfolder/
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule . index.php
谢谢