2011-01-25 6 views
1

私は、サーバの切り替え後に正しくルーティングされないようなCIアプリケーションを持っています。私は、これは、クエリ文字列パラメータとURLセグメントの両方を可能にしなければならないCodeIgniter Mod_Rewrite問題 - URLのみがインデックスを表示しています

$config['uri_protocol'] = "PATH_INFO"; 
$config['enable_query_strings'] = TRUE; 

を持っている私の設定で

これは、(それは古いサーバー上にあるとして)理論の仕事にすべきである:

http://www.domain.com/register?param=something

しかし、関係なく、私はそれに行って何URLのみインデックスを示していません。

私はhttp://www.domain.com/register

に行くのであれば、それはレジスタ制御を得ることはありません。しかし、それはインデックスを見せて、アドレスバーにこのことを示しています。

私は 'uri_protocol'をREQUEST_URIに変更すると動作します。しかし、クエリ文字列パラメータはそうではありません。

私の.htaccessは

DirectoryIndex index.php 
RewriteEngine on 
RewriteCond $1 !^(index\.php|assets|robots\.txt|favicon\.ico|license.txt) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA] 

RewriteCond %{QUERY_STRING} . 
RewriteRule ^$ /? [L] 

問題は何ができるか任意のアイデアですか?私が言うように、それは別のサーバーで動作しています。だから、私はおそらくApacheと何かを考えているのだろうか?

ありがとうございます!

答えて

2

私は、RewriteCond $1は決して評価されず、リダイレクトは起こりません。

あなたは、実際には、1に次の2行を減らすことができます

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

-fテストチェックがディレクトリをファイルので、それは

RewriteCond %{REQUEST_FILENAME} !-f 

を書くのに十分です。これでも期待どおりの結果が得られない場合は、実際に存在する場合は$_SERVERPATH_INFOORIG_PATH_INFOを調べてください。

+0

ありがとうございますが、まだ動作しません。 $ _SERVERにPATH_INFOはありませんが、/ registerであるORIG_PATH_INFOがあります – dzm

+0

私は$ config ['uri_protocol']を更新して 'ORIG_PATH_INFO'を使用しました。これが最善の解決策ですか? – dzm

+0

@daveはい。 PHPの実行環境(モジュール、CGI、FastCGI)によっては、実際の 'PATH_INFO'は' $ _SERVER'の奇妙なエイリアスにあります。 –

0

あなたは、./ index.phpの

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

前に、あなたが実際にあなたがディレクトリにCodeIgniterのを持っている場合は、単にこれらの行

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L,QSA] 

とすることにより得ることができる必要があります削除してくださいサーバの設定に応じてrewrite baseディレクティブを追加する必要があるかもしれません。

RewriteBase /directory/ 
関連する問題