默认cakePhp .htaccess文件不能与重定向一起使用

时间:2014-03-12 08:43:38

标签: apache .htaccess cakephp mod-rewrite

我刚安装了一个带有apache2的Ubuntu Web服务器。我上传了一个CakePHP项目。我也激活了rewrite_mod。

# sudo a2enmod rewrite

导航至www.mysite.ch/pierre/contacts时,请说明:

  

未找到
  在此服务器上找不到请求的URL /联系人。

在我的本地网络服务器中,它可以工作,我可以看到联系页面

如果我删除我的项目并使用函数phpinfo()添加文件phpinfo.php,它会显示有关服务器配置的信息,而且我没有消息"找不到"

我怀疑我的重定向不起作用。 你觉得怎么样?

使Apache2服务器使用.htaccess文件的基本步骤是什么?

这是我的.htaccess文件(它是默认的cakephp文件,我没有改变它)

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule  ^$ app/webroot/ [L]
   RewriteRule  (.*) app/webroot/$1 [L]
</IfModule>

这是我的httpd_conf文件

<Directory /var/www/vhosts/metauxch/httpdoc>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order Allow,Deny
        allow from All
</Directory>

Alias /pierre /var/www/vhosts/pierre/httpdoc
<Directory /var/www/vhosts/pierre/httpdoc>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order Allow,Deny
        allow from All
</Directory>

你有什么想法吗?

3 个答案:

答案 0 :(得分:0)

在httpd_conf文件中将 AllowOverride无更改为 AllowOverride All

启用模式重写,

sudo a2enmod rewrite

重启apache,

sudo /etc/init.d/apache2 restart

答案 1 :(得分:0)

对不起,我忘了写但是我做了

sudo a2enmod rewrite
sudo servive apache2 restart

已完成。

我也改变了这个AllowOverride All

问题,现在是我进入

的时候
  

http://eflumpc38.epfl.ch/pierre/contacts

它表示缺少te控制器皮尔(CakePHP)。虽然皮埃尔是根,而联系人是控制者。

第二点,当我碰上联系人(root / contacts /) 我有一个这样的网址

  

http://eflumpc38.epfl.ch/vhosts/pierre/httpdoc/contacts

而不是

  

http://eflumpc38.epfl.ch/pierre/contacts

这里有些不对劲

Alias /pierre /var/www/vhosts/pierre/httpdoc
<Directory /var/www/vhosts/pierre/httpdoc>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order Allow,Deny
        allow from All
</Directory>

当我在我常用的提供商上传相同的CakePHP项目时,我没有这个问题。

感谢

答案 2 :(得分:0)

试试这个解决方案。

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule    ^$ /app/webroot/    [L]
   RewriteRule    (.*) /app/webroot/$1 [L]
</IfModule>
CakePHP app directory (will be copied to the top directory of your application by bake):

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule    ^$    /webroot/    [L]
   RewriteRule    (.*) /webroot/$1    [L]
</IfModule>
CakePHP webroot directory (will be copied to your application’s web root by bake):

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ /index.php [QSA,L]
</IfModule>