2

私はURLの書き換えに不慣れで、現在、codeigniterで複数のアプリケーションのURLを書き換える際に問題に直面しています。私はいくつかの潜在的な答えでスタックオーバーフロー全体をスキャンしましたが、それでも私の問題を完全に解決していません

ルートの私のディレクトリはそれ自体です

  • -応用
  • -管理者
  • - フロントエンド

私が探しているのは、ユーザーがhttp://www.mydomain.com/で私のWebサイト(フロントエンド)にアクセスし、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ファイルをどこに置くべきか教えてください。ルートで?アプリケーションフォルダ内?または、それぞれフロントエンドフォルダと管理者フォルダ内にあります。

どうもありがとう。

よろしく。

4

2 に答える 2

0

ルートディレクトリにこのようなものを置いてみませんか。

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

これは基本的に、「admin」などのディレクトリを無視して、フロントエンド アプリケーションにルーティングします。config.phpindex.phpを設定し、コントローラーから削除する必要があります。

于 2012-07-03T15:43:04.247 に答える
0

この問題を解決する方法は既に見つかりました。これはあまり賢い方法ではありませんが、少なくともうまくいきました。

最初に、ルートに「admin」フォルダーを作成し、アプリケーションの index.php のコピーを作成しました。これにより、実質的にディレクトリは次のようになります。

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

このソリューションでは、異なる場所に 2 つの .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> 

admin フォルダの .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> 

これは localhost では機能しますが、ホストのファイル システムが異なる可能性があるため、レンタル サーバーでは機能しない可能性があることに注意してください。

于 2012-07-05T03:30:57.917 に答える