【问题标题】:remove index.php from cakephp url从 cakephp url 中删除 index.php
【发布时间】:2010-11-10 22:56:45
【问题描述】:

如何从 cakephp url 中删除 index.php?为了访问我的表单文件夹,我必须提供网址:http://localhost/cake_1_2/index.php/forms

如何删除那个 index.php?

我从 core.php 中提到的文件夹中删除了 .htaccess,并取消了 App.baseUrl 行的注释。但是,我无法在 url 中没有 index.php 的情况下查看该页面。

【问题讨论】:

  • 呃……你为什么要那样做?默认情况下 index.php 不应该是可见的,但是现在你已经删除了 .htaccess 文件,它会很明显地被看到。
  • 那我不应该删除那些文件吗?我不想在我的网址中使用 index.php。
  • 如果你想使用没有 index.php 的干净 url,你需要 .htaccess 文件,并且必须启用 mod_rewrite。

标签: cakephp friendly-url


【解决方案1】:

如果您使用带有 mod_rewrite 的 CakePHP(以获得漂亮的 URL),您可以在 WEBROOT 中创建新文件夹并访问文件就好了。

例子:

Site/webroot/forms/form.php = http://www.sitename.com/forms/form.php

CakePHP 的 mod_rewrite 设置为检查 WEBROOT 中的现有文件,将它们传递给 index.php。

如果您需要访问 webroot 之外的文件夹,您可以考虑使用符号链接。

【讨论】:

    【解决方案2】:

    检查 CakePHP Install guide 部分的 mod_rewrite。一旦在 Apache 中启用,漂亮的 URL 就可以正常工作。如果您不使用 Apache,那么您会被难看的 URL 所困扰。

    【讨论】:

    • 不正确。您也可以在 lighttpd 中使用 mod_rewrite 和短网址。
    【解决方案3】:

    您也可以查看此 mod 重写教程 here。 它具有一般信息,在许多情况下对 url 清理很有用。也有例子。

    【讨论】:

      【解决方案4】:

      只需按照以下步骤验证它是否存在

      1. 检查你的 root、app、webroot 是否包含实际的 .htaccess 文件。

      2. apachee服务器有如下配置:

        <Directory /> 
         Options FollowSymLinks   
         AllowOverride All#   
         Order deny,allow#   
         Deny from all
        </Directory>
        
      3. 此行也未加注释:

        LoadModule rewrite_module libexec/apache2/mod_rewrite.so
        

      然后重新启动您的apache 以查看更改

      【讨论】:

        【解决方案5】:

        我遇到了同样的问题,并且在 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/

        享受吧!

        【讨论】:

        • 我注意到你指向的目录是cakephp文件夹结构的app/webroot。指向基础文件夹(/SomePath/)不是更好吗,这样cakephp 项目中的所有.htaccess 文件都是可见的?当我阅读 1.3 版的 cakephp 文档时,它告诉我在 path/、path/app/ 和 path/app/webroot/ 中创建 3 个 .htaccess 文件。
        【解决方案6】:

        那么,应该没问题吧?你已经有 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') 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-14
          • 2014-10-28
          • 2012-06-15
          • 2011-05-20
          • 2012-09-21
          相关资源
          最近更新 更多