bfn*_*ncs 6 apache mod-rewrite cgi cakephp cakephp-2.1
我必须在具有CGI-PHP的环境中运行我的CakePHP 2.1应用程序,并且无法声明apache别名.我想用mod_rewrite将请求重定向到子域到CakePHP,但这没有用.
当前设置
~/user/public_html~/user/public_html/cakephp/dev.mydomain.tld我到现在所拥有的是(所有路径相对于webroot):
~/user/public_html/.htaccess
RewriteEngine on
Options +FollowSymlinks
RewriteCond %{HTTP_HOST} ^(www\.)?dev\.mydomain.com$ [NC]
RewriteCond %{REQUEST_URI} !^/cakephp/app/webroot/ [NC]
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{DOCUMENT_ROOT}/cakephp/app/webroot%{REQUEST_URI}/ -d
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R,L]
RewriteCond %{HTTP_HOST} ^(www\.)?dev\.mydomain.com$ [NC]
RewriteCond %{REQUEST_URI} !^/cakephp/app/webroot/ [NC]
RewriteRule ^(.*)$ /cakephp/app/webroot/$1 [L]
Run Code Online (Sandbox Code Playgroud)~/user/public_html/cakephp/app/webroot/.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
Run Code Online (Sandbox Code Playgroud)问题
请求以某种方式未正确路由(应用程序在我的开发环境中运行时没有问题,PHP作为模块和/cakephp/app/webroot/级别的虚拟主机).当我请求主页时,dev.mydomain.tld我只得到一个错误,Cake告诉我,CakephpController丢失了.
调试信息
$_SERVER调试的有趣部分作为第一行/cakephp/app/webroot/index.php
[REDIRECT_REDIRECT_REDIRECT_STATUS] => 200
[REDIRECT_REDIRECT_STATUS] => 200
[REDIRECT_HANDLER] => php-script
[REDIRECT_STATUS] => On
[HTTP_HOST] => dev.mydomain.tld
[HTTP_CONNECTION] => keep-alive
[SERVER_SOFTWARE] => Apache/2.2.21 (Unix)
[SERVER_NAME] => dev.mydomain.tld
[SERVER_ADDR] => 192.0.43.10
[SERVER_PORT] => 80
[DOCUMENT_ROOT] => /home/user/public_html
[SCRIPT_FILENAME] => /home/user/public_html/cakephp/app/webroot/index.php
[REDIRECT_URL] => /cakephp/app/webroot/index.php
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] =>
[REQUEST_URI] => /
[SCRIPT_NAME] => /cakephp/app/webroot/index.php
[_PHP5_WORK_DIR] => /home/user/public_html/cakephp/app/webroot
[PHP_SELF] => /
[ORIG_PATH_INFO] =>
[ORIG_PATH_TRANSLATED] => /home/user/public_html/cakephp/app/webroot/index.php
[PATH_INFO] => /cakephp/app/webroot/index.php
Run Code Online (Sandbox Code Playgroud)CakeRequest传递给调度程序的对象的有趣部分:
url => 'cakephp/app/webroot/index.php'
base => '/cakephp'
webroot => '/app/webroot/'
here => '/cakephp/cakephp/app/webroot/index.php'
Run Code Online (Sandbox Code Playgroud)这个问题
所以,我没有到达这里,是为什么CakeRequest对象引用我的文件夹结构$_SERVER['REQUEST_URI'] == '/'.为了做到这一点,我该怎么做?首先,我应该在哪里寻找问题:在mod_rewrite指令或CakePHP本身?我尝试了一些东西,包括在.htaccess文件中设置RewriteBase和App.baseUrl在Configuration对象中设置不同的设置,但似乎没有任何帮助.
如果有人能给我一个如何解决这个问题的指针,我真的很感激.