すべての問題はmod_rewriteの問題に起因していることがわかりました。httpd.conf
この問題が1つの環境で発生したのに、まったく同じで他の環境では発生しなかった理由については、まだ100%ではありません.htaccess
。まあ、解決策は、RewriteBase
ディレクティブを使用してベースURLに関する書き換えルールで明示的にすることです。
APIディレクトリに次の.htaccess
ファイルがあります。
DirectoryIndex index.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /api
RewriteRule ^$ index.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
API-Explorerディレクトリには、次のものがあります.htaccess
。
DirectoryIndex index.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /api/explorer
RewriteRule ^$ index.html [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.html [QSA,L]
</IfModule>
この問題をトラブルシューティングするために私が遭遇した貴重なヒントの1つは、Apacheのmod_rewriteロギングをオンにすることです。
# Adding logging for Rewrites
RewriteLog logs/rewrite.log
RewriteLogLevel 2
httpd.conf
これを;のグローバルスコープ領域に配置します。ロギングに関してすでに存在していたエントリの周りに配置しましたが、必要に応じて最後に配置することもできます。さらに、書き換えのトラブルシューティングに関する基本事項には、次のものが含まれます(この基本事項の場合はお詫びします)。
- httpd.confに
AllowOverride All
、Options FollowSymLinks
Restlerにサービスを提供しているディレクトリが設定されていることを確認してください。
- すべての構成をファイルに入れて、ファイルを完全
httpd.conf
に回避することができます(そして、その方法でも少し高速です)が、そうする場合は、相対URLに対して絶対URL参照が.htaccess
あることを覚えておいてください。httpd.conf
.htaccess