0

每次需要部署 CodeIgniter 应用程序时,我都发现自己在为更改 .htaccess 中的路径而苦苦挣扎。所以; 我正在寻找一个合适的、良好的工作解决方案,无论实际项目的位置如何。

障碍:我的本地测试环境不是 localhost/ 而是 localhost/project。这很可能不会出现在实际环境中(更有可能/)。因此,我更喜欢无论如何都可以使用的解决方案。

我当前的.htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ /project/index.php?/$1 [L]

    RewriteCond %{REQUEST_URI} ^application.*
    RewriteRule ^(.*)$ /project/index.php?/$1 [L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /project/index.php?/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
    ErrorDocument 404 /project/index.php
</IfModule>  

仅使用 index.php 作为路径是行不通的。它给了我一个 404 not found 错误。尝试了很多不同的组合,并希望看到您的建议。谢谢!

4

1 回答 1

0

就我个人而言,我不喜欢您在 .htaccess 中拒绝系统和应用程序文件夹。

根据此处找到的“CI 最佳实践”指南 ( http://codeigniter.com/forums/viewthread/125687/ ) - 您应该将您的应用程序和系统文件夹移出 public_html,只留下 index.php。然后不管人们尝试什么花哨的东西 - 他们无法从 http 访问您的应用程序和系统文件夹。

然后同时 - 这是我在所有项目中使用的 .htaccess 文件 - 不需要任何修改。它只是“有效”(对我来说)。

Options -Indexes
Options +FollowSymLinks

# Set the default file for indexes
DirectoryIndex index.php

<IfModule mod_rewrite.c> 
        # activate URL rewriting 
        RewriteEngine on  

        # do not rewrite links to the documentation, assets and public files 
        RewriteCond $1 !^(files|css|js|assets|uploads|captcha)

        # do not rewrite for php files in the document root, robots.txt                  
        RewriteCond $1 !^([^\..]+\.php|robots\.txt) 

        # but rewrite everything else   
        RewriteRule ^(.*)$ index.php/$1 [L]
 </IfModule>

 <IfModule !mod_rewrite.c>     
        # If we don't have mod_rewrite installed, all 404's
        # can be sent to index.php, and everything works as normal. 
        ErrorDocument 404 index.php 
  </IfModule>   

哦-我将它用于本地主机上的多个项目。即 localhost/project1 , localhost/project2

只需将 htaccess 文件的副本放在每个项目的根目录中即可。我的根本地主机中没有这个文件

于 2012-04-22T08:05:30.353 回答