mod_rewrite用于编码器点火器中的多个应用


mod_rewrite for multiple application in codeigniter

我是 url re-writng 的新手,目前在 codeigniter 中为多个应用程序重写 url 时面临问题。我已经扫描了整个堆栈溢出,有一些潜在的答案,但它仍然没有完全解决我的问题

我在根目录是这样的

  • -应用
  • --管理员
  • -
  • -前端

我正在寻找的是让我的用户使用 http://www.mydomain.com/访问我的网站(前端),而我的管理员(后端)作为 http://www.mydomain.com/admin/

我目前的 .htaccess 是这样的

<IfModule mod_rewrite.c>
    RewriteEngine On
# If the user types just "admin".
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^admin$ administrator.php [L,QSA]
# If the user enter in any admin section, like "admin/section".
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^admin'/(.*)$ administrator'.php/$1 [L,QSA]
# If the user types any site section, like "site/section".
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index'.php/$1 [L,QSA]
    ErrorDocument 404 /index.php
</IfModule> 

代码来自 CodeIgniter 多应用程序 .htaccess 问题

我可以通过上面的 .htaccess 在前端获得我想要的东西,但我无法让它在我的后端工作。基本上,www.domain.com/admin 给出404页面未找到错误。

请就此问题向我提供建议。另外,请指导我应该在哪里放置这个.htaccess文件?从根本上?在应用程序文件夹内?或分别在前端和管理员文件夹中。

非常感谢。

问候。

为什么不在根目录中有这样的东西。

RewriteEngine on
RewriteCond $1 !^(index'.php|update'.php|assets|admin|robots'.txt|favicon'.ico)
RewriteRule ^(.*)$ index.php/$1 [L]

这基本上会忽略任何目录,例如"admin"来路由到前端应用程序。您必须设置config.php并从控制器中删除索引.php。

已经找到了解决此问题的方法。这不是一种非常聪明的方法,但至少奏效了。

首先,我在根目录中创建了一个"admin"文件夹,其中包含应用程序索引的副本.php这有效地使我的目录看起来像这样。

    -admin
    --.htaccess
    --index.php
    -application
    --frontend
    --administrator
    -index.php
    -.htaccess

对于此解决方案,您需要在不同的位置有两个 .htaccess 文件。对于根目录的 .htaccess,它应该如下所示。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond $1 !^(index'.php|update'.php|administrator'.php|assets|admin|robots'.txt|favicon'.ico)
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
    ErrorDocument 404 /index.php
</IfModule> 

对于管理员文件夹中的 .htaccess

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

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

虽然这适用于本地主机,但值得注意的是,它可能不适用于租用的服务器,因为主机中的文件系统可能不同。