我正在尝试将XenForo添加到我的Phalcon应用程序中。该项目的结构如下:
www/
phalcon/
app/
controllers/
AccountController.php
views/
account
login.phtml
public/
forums/ <-- XenForo installation
.htaccess
index.php
.htaccesswww/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表现得很好?
发布于 2014-04-18 16:45:49
但是XenForo不是一个独立的应用程序吗?我明白你想要什么,但是深呼吸,如果你真的需要它,我会想一想。你让事情变得更复杂了。如果XenForo使用一些指向不存在文件的神奇URL怎么办?!
我不能指出所有可能的复杂情况,但肯定会有一些复杂的情况,您可以通过简单的put XenForo安装来避免这种情况,而不是Phalcon为自己的资产使用的文件夹。每个项目都有各自的约定,我只是对此有一种不好的感觉:)
下面是我的建议:您可以将XenForo保留在“phalcon”文件夹中,但将其移到“public”文件夹之外,并在主.htaccess中为该文件夹添加一些重写。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteCond %{REQUEST_URI} !^/forums(\/.*$|$)
RewriteRule (.*) public/$1 [L]
</IfModule>你以前做的同样的事情,但是在一个更“安全”的地方。
https://stackoverflow.com/questions/23145181
复制相似问题