【发布时间】:2014-04-17 23:33:04
【问题描述】:
我正在尝试将 XenForo 添加到我的 Phalcon 应用程序中。项目结构如下:
www/
phalcon/
app/
controllers/
AccountController.php
views/
account
login.phtml
public/
forums/ <-- XenForo installation
.htaccess
index.php
.htaccess
www/phalcon/.htaccess 的文件如下所示:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
</IfModule>
www/phalcon/public/.htaccess 的文件如下所示:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
</IfModule>
我在 www/phalcon/app/views/account/login 添加了一个视图,其中包含一个发布到 XenForo 登录脚本的表单,该脚本位于 http://localhost/phalcon/forums/login:
<?php echo $this->tag->form('forums/login'); ?>
<p>
<label for="name-email">Name or email:</label>
<?php echo $this->tag->textField('login'); ?>
</p>
<p>
<label for="password">Password</label>
<?php echo $this->tag->passwordField('password'); ?>
</p>
<p>
<?php echo $this->tag->submitButton('Login'); ?>
</p>
<?php echo $this->tag->endForm(); ?>
因为我没有 ForumsController,所以发布表单引发了错误:
PhalconException: ForumsController handler class cannot be loaded
所以我将www/phalcon/public/.htaccess的文件修改为:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(forums)($|/) - [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
</IfModule>
这会导致 Phalcon 忽略任何以 forums 开头的路由。但是,现在我在发布表单时收到 404:
The requested URL /phalcon/public/forums/login was not found on this server.
我认为此时 XenForo 会接管路由,但显然不是。我需要做些什么才能让 Phalcon 和 XenForo 发挥出色?
【问题讨论】:
-
为什么论坛不能移动到“www”文件夹?
-
你为什么不这样做?只是想了解你在做什么人......
-
嗯,
/var/www除了/phalcon之外还有几个项目。该应用程序有许多部分,包括论坛。所以/forums位于/phalcon下。将/forums移动到/var/www会使其成为一个完全独立的应用程序,不是吗? -
@cvsguimaraes 顺便说一句,我并没有故意粗鲁,我只是不明白移动论坛目录将如何帮助解决我的问题。我希望访问论坛的 URL 为
http://localhost/phalcon/forums。如果论坛目录不在/var/www/phalcon/public/forums下,我可以做到这一点吗?我的项目结构错了吗? -
我们很酷 :) 我正在写一个答案,考虑到你所说的,等等。
标签: php .htaccess mod-rewrite phalcon xenforo