从cakephp url中删除index.php

时间:2009-07-15 09:53:56

标签: cakephp friendly-url

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

如何删除index.php?

我从core.php中提到的文件夹中删除了.htaccess,并取消注释了App.baseUrl行。然而,如果没有url中的index.php,我将无法查看该页面。

6 个答案:

答案 0 :(得分:2)

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

示例:

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

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

如果你需要到达webroot之外的文件夹,你可以考虑使用符号链接。

答案 1 :(得分:1)

检查CakePHP Install guide部分是否有mod_rewrite。一旦在Apache中启用,漂亮的URL就可以工作了。如果您没有使用Apache,那么您就会遇到丑陋的URL。

答案 2 :(得分:1)

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

  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
    
  4. 然后重新启动apache以查看更改

答案 3 :(得分:1)

我有同样的问题,并在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>

完成此操作后,我可以轻松创建路线&amp;访问页面,例如:http://localhost/about/

享受!

答案 4 :(得分:0)

你也可以查看这个mod重写教程here。 它有一般信息,在许多情况下对网址清理很有用。还有一些例子。

答案 5 :(得分:0)

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

或在config / app.php

上的蛋糕3+
//'baseUrl' => env('SCRIPT_NAME')