2

我有两个 Codeigniter 站点,一个位于另一个的子目录中。我需要一些帮助来修改我的 htaccess 文件以从两者中删除 index.php。

第一个站点,http://subdomain.domain.com存储在/home/sites/subdomain/www/html/

第二,http://test.subdomain.domain.com住在/home/sites/subdomain/www/html/app_staging/

这是我的 .htacess 文件来自/home/sites/subdomain/www/html/

RewriteEngine On
# Rewrite the main domain
RewriteCond %{HTTP_HOST} !test.subdomain.domain.com
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]

# Rewrite the sub domain
RewriteCond %{HTTP_HOST} test.subdomain.domain.com
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/(.*)$ /app_staging/index.php?/$1 [L]

这是从第一个站点中删除 index.php,那里一切正常。在第二个站点上,我可以加载默认控制器表单http://test.subdomain.domain.com,但后续页面从服务器返回 404。我的下一步是什么?

4

1 回答 1

3

您应该将两个.htaccess文件中的每一个都放在它们自己的根 CI 文件夹中。

就个人而言,我更喜欢限制请求的文件和/或文件夹,以防止它们被RewriteRule.

因此,对于位于的第一个文件/home/sites/subdomain/www/html/

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine on
    RewriteCond $1 !^(index\.php|robots\.txt|favicon\.ico|public)
    RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>

而另一个位于/home/sites/subdomain/www/html/app_staging/

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine on
    RewriteCond $1 !^(index\.php|robots\.txt|favicon\.ico|public)
    RewriteRule ^(.*)$ /app_staging/index.php/$1 [L]
</IfModule>

注意:如果您不css希望它们被.publicRewriteCondRewriteRule

作为旁注:您可能希望通过在每个.htaccess文件中使用以下内容来防止目录列表:

<IfModule mod_autoindex.c>
    Options -Indexes
</IfModule>
于 2013-08-06T09:50:13.520 回答