将cakephp中的所有.htacces配置移动到Apache虚拟主机

时间:2015-09-17 06:10:15

标签: php apache .htaccess cakephp

我的目的是加快蛋糕应用程序的性能。我从我的蛋糕应用程序中复制了所有.htaccess文件,尽管configtest说一切正常,但在尝试加载页面时仍然出现内部服务器错误。这是从应用程序目录中引入.htaccess文件的正确方法吗?

<Directory /var/www/html/aga-stag>
    Options Includes FollowSymLinks
    Require all granted
    AllowOverride None
    Order deny,allow
    Allow from all


    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteBase /

        RewriteCond %{HTTP_HOST} ^kwiksta\.com [NC]
        RewriteRule ^(.*)$ http://www.kwiksta.com/$1 [L,R=301]

        RewriteRule ^(red5|oflaDemo) - [L]

        RewriteRule    ^$ app/webroot/    [L]

        RewriteRule    (.*) app/webroot/$1 [L]
   </IfModule>

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

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

1 个答案:

答案 0 :(得分:1)

.htaccess文件是有效的apache conf语法,因此原则上您需要做的就是将htaccess文件的内容复制并粘贴到正确的位置。但是不要盲目地这样做。

这更适合处理您的kwiksta.com - &gt; www.kwiksta.com重定向:

<VirtualHost *:80>

    ServerName kwiksta.com

    RewriteEngine On
    RewriteRule ^ http://www.kwiksta.com{REQUEST_URI} [R=301,L]

</VirtualHost>

此片段:

RewriteRule ^(red5|oflaDemo) - [L]

通过将这些文件夹(假设它们是什么)放入(或符号链接)到webroot中来更好地处理

这就是处理CakePHP应用程序所需的全部内容:

<VirtualHost *:80>

    DocumentRoot /var/www/html/aga-stag/app/webroot
    ServerName www.kwiksta.com
    AllowOverride None # No need for htaccess files now

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

</VirtualHost>

请注意,文档根目录指向webroot文件夹,因为它应该是the asset pipeline docs,这使得3个htaccess文件中的2个无关紧要。

请确保重写规则与您正在使用的CakePHP版本相匹配any and all production installs changed over