
Apache Web サーバー上に PHP Web アプリケーションがあります。
サーバー上の Web アプリケーションへのパスは次のとおりです。/var/www/html/intern/organisation/example_app
Web アプリケーションの URL は次のとおりです。
https://www.example.de/org1/intern/example_app/
https://www.example.de/org1/intern/example_app/view1/
すべてのリクエストがリダイレクトされるようにしたい
https://www.example.de/org1/intern/example_app/index.php
私のローカル XAMPP サーバーでは、この目的に適した次の .htaccess ファイルを使用しています。
RewriteEngine On
RewriteBase /example_app
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php [L]
しかし、そのファイルがサーバー上でどのようになっているのか全くわかりません。サーバー上では httpd.conf も使用しています。そのファイルが.htaccess
以下のファイルに干渉するかどうかが気になります。/var/www/html/intern/organisation/example_app/
サーバー上で書き換えを構成する方法をご存知の方はいらっしゃいますか?
答え1
.htaccess
サブディレクトリ内のファイルは次/org1/intern/example_app/
のようになります。
DirectoryIndex index.php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
同じ.htaccess
ファイルをサブディレクトリに保存すれば、ローカルでもライブ サーバーでも使用できますexample_app/
。
ファイルが、書き換え先のファイル.htaccess
と同じディレクトリにある場合は、ディレクティブは必要ありません。index.php
RewriteBase
ディレクティブはサーバー設定でDirectoryIndex
すでに に設定されている可能性が高いindex.php
ため、ここでは必要ありませんが、完全性を保つために含めておく必要があります。これは、アプリケーション ディレクトリ自体が要求された場合 (つまりhttps://www.example.de/org1/intern/example_app/
) に必要です。
これは「内部リダイレクト」、またはより一般的には「書き換え」と呼ばれるものであることに注意してください。単に「リダイレクト」と言うと、それは「外部 (HTTP) リダイレクト」を意味しますが、これはまったく別のものです。
.htaccess file
そのファイルが、以下のに干渉するかどうか疑問に思います。/var/www/html/intern/organisation/example_app/
複数の.htaccess
ファイル(およびサーバー設定)が競合する可能性があります。ただし、子設定(同じコンテクストつまり、ディレクトリ) は、親設定の mod_rewrite ディレクティブを完全に上書きします (デフォルト)。
余談:(あるいはそうではないかもしれない)
サーバー上の Web アプリケーションへのパスは次のとおりです。
/var/www/html/intern/organisation/example_app
Web アプリケーションの URL は次のとおりです。
https://www.example.de/org1/intern/example_app/
ただし、少し混乱しますが、ファイル パスと URL パスが一致していないようです。Alias
サーバー構成で追加の書き換えまたは構成を行っていますか、それともexample_app
ファイル パスがexample_app
URL パスとは異なるディレクトリになっていますか。
答え2
詳細な回答をありがとうございました。書き換えルールは問題ではありませんでした。
問題は単純でした。httpd.conf で AllowOveride を有効にする必要があったため、.htaccess 全体が機能しませんでした。