ここには同様の質問がたくさんあることは知っていますが、残念ながら、私が抱えている問題を解決するものはありません。エイリアスもある場合に書き換えルールが機能しない理由を解明しようとしています。以下は、問題の原因となっている状況の説明です。
使用できるサブドメインが限られているため、同じサブドメインに含めたい多くの Zend Framework アプリケーションがあり、また、デモンストレーション/チュートリアルとして行ったすべてのプロジェクトのサイトを作成したいので、それらすべてを持つことは理にかなっています一つの場所へ。多くの Web アプリケーション/MVC ソリューションと同様に、Zend Framework は、各アプリケーションが独自のドメインまたはサブドメインに配置されるように設計されています。したがって、フォルダーをサブドメインのようにサイト/Web アプリケーションにするソリューションを探しています。これは私が現時点で持っているものです。
デモ用にサブドメインを C:/Apache2/htdocs/demos に設定し、その中にパブリック フォルダーをドキュメント ルートとして配置します (zend フレームワークは、パブリック フォルダーをドキュメント ルートとして使用し、アプリケーションを作成するアプリケーションのような他のフォルダーをその上に配置します)。これは、ユーザーがアクセスしてはならないファイルにアクセスできないようにするためのセキュリティ上の理由によるものです)。また、demos.example.com サブドメイン内のフォルダーとして保持したいアプリケーション用の C:/Apache2/htdocs/zf-basic-project もあります (ここでも、ドキュメント ルートとして public フォルダーがあります)。
demos サブドメインの仮想ホストは次のようになります。
<VirtualHost *:80>
ServerName demos.example.com
DocumentRoot "C:/Apache2/htdocs/demos/public"
ErrorLog "logs/demos-error.log"
CustomLog "logs/demos.log" common
<Directory "C:/Apache2/htdocs/demos/public">
DirectoryIndex index.php
AllowOverride All
</Directory>
Alias /zf-basic-project "C:/Apache2/htdocs/zf-basic-project/public/"
<Directory "C:/Apache2/htdocs/zf-basic-project/public">
DirectoryIndex index.php
AllowOverride None
Require all granted
RewriteEngine On
RewriteBase /zf-basic-project
RewriteCond %{REQUEST_URI} !^/zf-basic-project [NC]
RewriteRule ^(/?)(.*) /zf-basic-project/$2 [PT]
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /zf-basic-project/index.php [NC,L]
</Directory>
</VirtualHost>
この半分は私が望むことをします。エイリアスは、zf-basic-project プロジェクト フォルダーのパブリック フォルダーを参照するため、zf-basic-project を demos.example.com/zf-basic-project に表示し、コードは上のフォルダー レベルのファイルを使用して検索します。使用する必要があるすべてのファイル。C:/Apache2/htdocs/zf-basic-project/public に実際にあるようなものです。次に、ディレクトリ セクションでファイルを使用するためのアクセス許可を設定します。私は、書き換えルールをディレクトリに配置し、.htaccess ファイルを許可しないことを選択しました。これにより、プロジェクトの .htaccess ファイルを調整して書き換えルールを追加する必要がなくなります (元のプロジェクトを変更しないでください)。
私が抱えている問題は、zf-basic-project が独自のサブドメインになるように作成されたため、/css/default.css などの絶対パスを介して CSS のようなものを参照し、現在は demos サブドメイン内のフォルダーになっているためです。ブラウザは、これが実際には /zf-basic-project/css/default.css にあることを認識しているため、/zf-basic-project/css が実際にはコードである /css であるとディレクトリに書き直そうとしました:
RewriteCond %{REQUEST_URI} !^/zf-basic-project [NC]
RewriteRule ^(/?)(.*) /zf-basic-project/$2 [PT]
これは、リンクが /zf-basic-project で始まらない場合、それを URL に追加することを示しています。通常のプロジェクトでは機能しますが、エイリアスと衝突するように見え、機能しません。また、何もしないように見える適切な測定のために RewriteBase も追加しました。残りの書き換えは、アプリケーションがフォルダー内で実行されるときに機能しますが、リンクが間違っているため、CSS、JavaScript などが欠落しています。書き換えルールを機能させるための修正を知っている人はいますか。つまり、/css は /zf- として扱われます。基本プロジェクト/css.
もちろん、CSSなどへのすべてのリンクをやり直すこともできますが、これはデモンストレーションであり、通常はサブフォルダーにないため、プロジェクトを元の状態とまったく同じように保ちたいため、これを行いたくありません。物事を明確にするために、物事をできるだけ変更しないでおく方が良いでしょう。
事前に助けてくれてありがとう.
Ps。興味のある方のために、デモ サブドメインに含めたい Zend Framework プロジェクトは、https://github.com/paulalbinson/zf-basic-projectの GitHub にあります。