0

そのため、ホーム サーバー (Ubuntu 9.1) で SVN をセットアップしており、CodeIgniter アプリに加えられた変更をすぐに表示できるようにしたいと考えています。

したがって、私の作業コピーは /home/myname/environments/development/appname にあります。

Vhost は dev.appname.myname.ca でアクセスでき、構成は次のようになります。

 DocumentRoot /home/myname/environments/development/
 ServerName dev.myname.ca
 ServerAlias dev.*.myname.ca

 RewriteEngine On
 RewriteCond %{HTTP_HOST} !^www.* [NC]
 RewriteCond %{HTTP_HOST} ^dev.([^\.]+)\.myname\.ca
 RewriteCond /home/myname/environments/development/%1/trunk/ -d
 RewriteRule ^(.*) /%1/trunk/public/$1

したがって、dev.appname.myname.ca に移動すると、/home/myname/environments/development/appname/trunk/public がポイントされます。

これは CodeIgniter アプリなので、すべてのリクエストを public/ から public/index.php にリダイレクトする必要があるため、public/ の .htaccess ファイルは次のようになります。

RewriteEngine On
RewriteCond $1 !^(index\.php)
RewriteRule ^(.*)$ index.php/$1 [L]

この部分は .htaccess ファイルに含まれています。これは、実際の運用サイトではサーバー構成にアクセスできないため、オーバーライドする必要があるためです。

問題は、リダイレクトのループが発生し、最終的に 500 エラーが発生することです。

/var/log/apache2/error.log から:

redirected from r->uri = /appname/trunk/public/index.php/appname/trunk/public/index.php/appname/trunk/public/index.php/appname/trunk/public/index.php/appname/trunk/public/index.php/appname/trunk/public/index.php/appname/trunk/public/index.php/

リクエストを適切な public/ ディレクトリ (この場合は /home/myname/environments/development/appname/trunk/publc) にリダイレクトし、すべてのリクエストを public/ から public/index.php にリダイレクトするにはどうすればよいですか?

私はそれが長々とした質問であることを知っています-あなたの助けに感謝します. :)

4

3 に答える 3

1

RewriteRule は、実際に必要なものとは逆になっています。

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

これにより、「dirA/dirB/dirC/」が「index.php/dirA/dirB/dirC」に変わります。後続の HTTP 要求では、これが条件を満たし、ルールが再度適用されます。何度も何度も…

試す:

RewriteRule ^(.*)\/?$ $1/index.php [L]
于 2010-01-19T19:48:44.437 に答える
0

Philが述べたように、ここから書き換えルールを使用する必要がありますhttp://codeigniter.com/wiki/mod_rewrite/

一部のデバッグでは、httpd.confまたは仮想ホストconfに次の行を追加できます。

<IfModule mod_rewrite.c>
RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 3
</IfModule>

tail -f /var/log/apache2/rewrite.log

書き換えルールといくつかのエラーを確認できます。レベルを9に変更することもできます。このオプションには注意してください。それはたくさんの情報を生み出します。それは時々役に立ちます。

于 2010-01-19T19:43:57.117 に答える
-1

public/ から public/index.php にリダイレクトする必要はありません。Apache がリダイレクトしてくれるからです。

CodeIgniter Wiki は、究極の CodeIgniter .htaccess を作成する方法を示しています。

于 2010-01-19T10:52:24.000 に答える