-1

最近、私のホスティング プロバイダーは、Apache システムを 2.4.4 に更新しています。そうすることで、サイトを実行するためにクエリ文字列を強制する必要があるため、式エンジン サイトが壊れてしまいました。

私が理解していることから、.htaccess ルールの行を ... に更新するだけで、この問題を簡単に修正できます。

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

残念ながら、これに対する修正はこれほど単純ではありませんでした。

私の Web サイトでは、カスタム式エンジン プラグインを使用して、IP to Nation モジュールを使用して世界のどの地域にいるのかを検出しています。基本的に何が起こるかというと、あなたが米国出身の場合は米国のコンテンツを含むサイトが表示され、それ以外の場所の場合は URI の最初の部分に「international」が追加され、URI の最初の部分に基づいて国際的なコンテンツが表示されます。私たちのURI

例えば

http://www.example.com/segment_1/segment_2/segment_2 = US SITE

http://www.example.com/international/segment_1/segment_2/segment_2 = INTERNATIONAL SITE 

そのクエリ文字列を index.php の rewriteRule に追加しようとすると、国際サイトが壊れてしまい、その理由がわかりません。

RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteRule /international/(.*)$ /index.php/$1 [L]

「?」を追加します。米国のサイトをRewriteRule ^(.*)$ /index.php?/$1 [L]修正しますが、国際ページが見つからないと言って国際サイトを壊します。

「?」を追加します。国際サイトをRewriteRule /international/(.*)$ /index.php?/$1 [L]修正しますが、クエリ文字列が必要なため、米国サイトは機能しません。

そして、それらの両方に追加しても機能しません。

この問題を克服するために .htaccess 内に何かが明らかに欠けていますが、正しい構文を生成できないようです。

何か案は?

4

1 に答える 1

1

ここでは勝手な推測をするので、まったく役に立たないかもしれません...

RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteRule /international/(.*)$ /index.php/$1 [L]

この問題は、index.php? に追加する URL を書き換えてから、インターナショナル用に再度追加するように見えます。したがって、「?」を追加すると、両方に、それは書き換えを殺します。

したがって、最初の書き換えではインターナショナルを除外する必要があり、2 番目の書き換えではインターナショナルのみに影響するようにします。

RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(international)
RewriteRule ^(.*)$ /index.php?/$1 [L]
RewriteCond %{REQUEST_URI} (international)
RewriteRule /international/(.*)$ /index.php?/$1 [L]

2 番目の部分について、3 つの初期条件を繰り返す必要がある場合があります。

アップデート

これにより、最終的に機能しました(正しい方向に向けてくれてありがとう-ルーク)

RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(international)
RewriteRule ^(.*)$ /index.php?/$1 [L]

RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (international)
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteRule /international/(.*)$ /index.php?/$1 [L]
于 2013-05-03T12:08:25.607 に答える