1

ディレクトリsiteとそのサブフォルダとファイルがあります。また、以下が含まれ、.htacess以下はコードです

RewriteRule ^([A-Za-z0-9-]+)/?$ index.php?cc=$1

だから私の以下のURLは効果的でうまく機能します。

http://localhost/site/sweetinc

そして以下のコードはindex.php以下にあります

<?php
if (isset($_GET['cc']) and !empty($_GET['cc'])) {
    echo $_GET['cc'];
} else {
    die("Sorry wrong code");
}
?>

そして、これはうまく機能しています。

今、私は通常どおりにすべてのファイルにアクセスまたは表示したい

http://localhost/site/sweetinc/home.php
http://localhost/site/sweetinc/test.php

home.phpとディレクトリtest.phpにありsiteます。また、他のサブフォルダにリダイレクトする場合は、次のように表示されます。

http://localhost/site/sweetinc/sub-folder1/test3.php

私は別のディレクトリを使用してグループを分離し、ディレクトリ.htaccess内のすべてのファイルを次のように使用して検討しているので、これは可能ですか?sitebase files

ここに画像の説明を入力してください

4

1 に答える 1

1

ここでの秘訣は(私があなたの質問を正しく理解している場合)、実際に存在するファイルに到達しようとしているときに書き換えルールを有効にしたくないということですよね?

その場合、の直前に RewriteRule次の行を追加します。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

このように、書き換えは、URL(/ site / sweetincなど)がサーバー上に実際に存在しない場合にのみ有効になります。含まれている場合(/site/sweetinc/home.php)、書き換えはスキップされ、ファイルが表示されます。

-fファイル名が存在するかどうかを-d確認し、ディレクトリが存在するかどうかを確認するため、/ home / sweetinc / somedir /も機能するはずです)

更新された質問に基づいて更新 するこれには、2つの別個のルールが必要です。まず、URLの/ sweetinc /ディレクトリを使用する場合は、/site/フォルダを参照してください。

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

次に、ファイルが実際に存在しない場合は、index.phpに処理させます。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?cc=$1 [L]

いくつかの例:

ファイルサブドメインに次のファイルがあります。

  • /index.php(これはあなたと同じ内容なので、?cc=を読み取ります
  • /circle3.PNG
  • /上記のルールを使用した.htaccess

http://files.litso.com/sweetinc/helloは、「hello」をエコーするindex.phpを示しています。http ://files.litso.com/sweetinc/circle3.PNGは、/内の実際のファイルを示しています。

(注:私は/ sweetinc /ディレクトリを持っていません、それはすべて偽物です)

于 2012-12-01T11:30:31.923 に答える