Codeigniter:url重定向到subfolfer后指定的单词

时间:2015-10-30 20:10:50

标签: .htaccess codeigniter redirect routes

我在根目录中有Codeigniter 3项目。我需要在子文件夹(admin)中使用kohana其他项目。 我需要进行重定向,当我输入mysite.xyz/admin时会将我重定向到子文件夹admin,其中有kohana文件:index.php等。

现在CodeIgniter认为admin是一个控制器。

我的.htacces文件:

<IfModule mod_rewrite.c>

  RewriteEngine On
  RewriteBase  /projekty/folder/
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?/$1 [L]
  RewriteRule admin/^(.*)$ /admin/ [L]

</IfModule>
<IfModule !mod_rewrite.c>

  ErrorDocument 404 /index.php

</IfModule>

有任何想法,如何解决?我试图找到一些解决方案,但没有成功。

这是Kohana .htaccess:

RewriteEngine On
RewriteBase /projekty/folder/admin/

###### Add trailing slash (optional) ######
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [L,R=301,NE]

RewriteCond %{REQUEST_METHOD} !POST
RewriteRule ^(.*)home/u343855449/public_html/projekty/folder/admin/index.php/(.*)$ /$1$2 [R=301,L,NE]

RewriteCond $1 ^(index\.php|robots\.txt|favicon\.ico|media)
RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?kohana_uri=$1 [L,QSA]

1 个答案:

答案 0 :(得分:1)

您的管理规则位于错误的位置。它需要在CI规则之前出现。把它放在rewritebase下面。试试这些规则。

<IfModule mod_rewrite.c>

  RewriteEngine On
  RewriteBase  /projekty/folder/

  RewriteRule ^admin/(.*)$ /admin/$1 [L]

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !^/admin [NC]
  RewriteRule ^(.*)$ index.php?/$1 [L]

</IfModule>

实际上你真的不需要管理规则。只需告诉它在CI规则中忽略管理员,如下所示。

<IfModule mod_rewrite.c>

      RewriteEngine On
      RewriteBase  /projekty/folder/

      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_URI} !^/admin [NC]
      RewriteRule ^(.*)$ index.php?/$1 [L]

    </IfModule>