【发布时间】:2011-12-15 03:05:05
【问题描述】:
这是在 CakePHP 的上下文中,但我确信它在其他应用程序中很常见。我执行了此页面上的说明:
http://book.cakephp.org/view/917/Apache-and-mod_rewrite-and-htaccess
答:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
乙:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
</IfModule>
C:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
在第 3 节中,有 3 个 .htaccess 文件。为简单起见,我们将它们称为 A、B 和 C。虽然它似乎在我的服务器(localhost XAMPP)上运行,但我不确定我是否了解重定向的路径。无论我输入什么地址,它总是会按原样转到 localhost\cake\users\login。
我的应用程序所在的根目录是 \cake。我有 \cake、\cake\app 和 cake\app\webroot,其中分别包含 A、B 和 C。按照上面的说明, cake\app 中的代码运行,这就是我想要的。在像上面那样正确设置 .htaccess 文件之前,\cake 中的代码正在运行;这是不正确的,因为它告诉我我的数据库没有设置,你没有这个文件,等等。
有人可以插话并帮助我解决此应用程序在运行任何 php 文件之前 采用的“路径”吗?是否将所有内容重定向到 cake\app\webroot,然后重定向到从那里设置的 .htaccess 文件之外的任何重定向? (在这种情况下,蛋糕\用户\登录)
感谢您的帮助!
PS:我很惭愧地说我还没有弄清楚哪个文件的哪个部分正在重定向到所有对用户登录页面的 HTTP 请求。我前一阵子设置了这个,我刚刚回来。我想我正在关注 CakePHP Cookbook 页面上的第二个教程,您可以在其中添加 ACL 功能..
【问题讨论】:
-
简单的跟踪方法:在每次重写的url中添加一个额外的查询参数:
RewriteRule ...?url=$1&from=fileC -
马克,“...”应该是别的东西吗?
-
是的,这是您重写网址的其余部分。只是懒惰不剪切'n粘贴整个东西。重要的是添加
&from=fileC查询参数。 -
其实,我想我明白你的意思了。我尝试将这些参数添加到每个重写规则中。但是,我并没有真正看到页面加载上显示的任何内容。
-
你在重写中做重定向,所以它只是内部重写......它们应该出现在服务器的访问日志中。
标签: php .htaccess cakephp redirect