如何从 cakephp url 中删除 index.php?为了访问我的表单文件夹,我必须提供 url:http://localhost/cake_1_2/index.php/forms。
我如何删除那个 index.php?
我从 core.php 中提到的文件夹中删除了 .htaccess 并取消了 App.baseUrl 行的注释。然而,如果没有 url 中的 index.php,我将无法查看该页面。
如何从 cakephp url 中删除 index.php?为了访问我的表单文件夹,我必须提供 url:http://localhost/cake_1_2/index.php/forms。
我如何删除那个 index.php?
我从 core.php 中提到的文件夹中删除了 .htaccess 并取消了 App.baseUrl 行的注释。然而,如果没有 url 中的 index.php,我将无法查看该页面。
如果您使用带有 mod_rewrite 的 CakePHP(以获得漂亮的 URL),您可以在其中创建新文件夹WEBROOT
并访问文件就好了。
例子:
Site/webroot/forms/form.php = http://www.sitename.com/forms/form.php
CakePHP 的 mod_rewrite 设置为检查现有文件,WEBROOT
而不是将它们传递给 index.php。
如果您需要访问 webroot 之外的文件夹,您可以考虑使用符号链接。
查看CakePHP 安装指南部分的 mod_rewrite。一旦在 Apache 中启用,漂亮的 URL 就可以工作了。如果您不使用 Apache,那么您就会被难看的 URL 所困扰。
我有同样的问题,并且在 URL 中有 index.php。您在 httpd.conf 中编辑了错误的区域。此外,确保您的 .htaccess 文件存在于:/.htaccess、/app/.htaccess 和 /app/webroot/.htaccess
您的 httpd.conf 应如下所示:
# Leave this area alone, CakePHP docs are wrong
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
# Match this area
<Directory "/SomePath/app/webroot">
Options Indexes FollowSymLinks MultiViews
AllowOverride All # Turn AllowOverride All on here
Order allow,deny
Allow from all
</Directory>
完成此操作后,我可以轻松创建路由和访问页面,例如:http://localhost/about/
享受!
你也可以在这里查看这个 mod 重写教程。它具有一般信息,在许多情况下对 url 清理很有用。也有例子。
只需按照以下步骤验证它是否存在
检查您的 root、app、webroot 是否包含实际的 .htaccess 文件。
apachee服务器具有以下配置:
<Directory />
Options FollowSymLinks
AllowOverride All#
Order deny,allow#
Deny from all
</Directory>
此行也未注释:
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
然后重新启动apache
以查看更改
那么,应该没问题吧?你已经有 mod_rewrite 了吗?
如果 mod_rewrite 正确加载,.htaccess 文件就位并且 index.php 仍然出现在链接中,那么很可能是 core.php 框架配置文件有问题。
问题原因
就我而言,这是 App.baseUrl 配置选项的问题:
Configure::write('App.baseUrl', env('SCRIPT_NAME'));
解决问题
以下是我通过注释掉 core.php 中的以下行来解决该问题(以及其他少数重定向问题)的方法:
// Configure::write('App.baseUrl', env('SCRIPT_NAME'));
或蛋糕 3+ 在 config/app.php
//'baseUrl' => env('SCRIPT_NAME')