7

状況

Zendフレームワークを使用しているため、アドレスでフォルダーを呼び出そうとすると、失敗に終わり、「無効なコントローラーが指定されました」というエラーが発生します。別のフォルダにあるアプリケーションに追加のフォーラムを接続する必要がありました。.htaccessファイルを次のように変更します。

RewriteRule ^forum(.*)$ forum$1 [L]

そしてしばらくの間、ページが2つのドメインに2つのバージョンで存在することに気付くまでは良かったです(phpはドメイン[.pl / .co.uk]を認識し、言語を選択します)。そこで、フォーラムを2つの別個のモジュールとして分離することにしました(たとえば、ポーランド語バージョンのフォーラムのフォルダーはforum_plになり、英国の場合は、forum_uk-2つの異なるフォーラムになります)

どうしたの?

このように機能するには、.htaccessファイルを書き直す必要があります。

IF: www.domena.pl/forum

次に、/ forum_plフォルダーからスクリプトを開きます

IF: www.domain.co.uk/forum

次に、/ forum_ukフォルダーからスクリプトを開きます。

最悪のことは、RewriteCondを追加して.htaccessファイルを修正しようとすると、元の(上に表示されている)バージョンに戻った後でも、最初のリダイレクトが正しく機能しなくなることです。

私を助けてください、そして私が以前に与えられた答えを見つけられなかったならば申し訳ありません。

編集:

最初の実用的なソリューション

RewriteRule ^forum_pl(.*)$ forum_pl$1 [L]
RewriteRule ^forum_uk(.*)$ forum_uk$1 [L]
RewriteCond %{HTTP_HOST} ^www.domena.pl(.*) [NC]
RewriteRule ^forum(.*)$ forum_pl$1 [L]
RewriteCond %{HTTP_HOST} ^www.domain.co.uk(.*) [NC]
RewriteRule ^forum(.*)$ forum_uk$1 [L]

動作したいように見えますが、解決が必要な問題は(TODO)です。

  1. www.domain.pl/forumと入力すると、www.domain.pl / forum_pl /に移動しますが、www.domain.pl / forum /と入力すると、www.domain.pl / forum /に移動します( forum_plから)。最初の状況で2番目の状況と同じように機能させる方法。

編集:

私の最後の解決策:

#FORUM
#PL
RewriteCond %{REQUEST_URI} ^/forum$ [NC]
RewriteRule ^(.*)$ forum/ [R=301,L]

RewriteRule ^forum_pl(.*)$ forum_pl$1 [L]

RewriteCond %{REQUEST_URI} ^/forum_pl(.*)$ [NC]
RewriteRule ^(.*)$ http://www.domena.pl/forum/ [R=301,L] #Dosen't work properly (?)

RewriteCond %{HTTP_HOST} ^www.domena.pl(.*) [NC]
RewriteCond %{REQUEST_URI} ^/forum(/?)$ [NC]
RewriteRule ^forum[^/](.*)$ forum_pl/$1 #Dosen't work properly, but without it crash!
RewriteRule ^forum(.*)$ forum_pl$1 [L]
#UK
RewriteCond %{REQUEST_URI} ^/forum_uk(.*)$ [NC]
RewriteRule ^(.*)$ http://www.domain.co.uk/forum/ [R=301,L] #Dosen't work properly (?)

RewriteCond %{HTTP_HOST} ^www.domain.co.uk(.*) [NC]
RewriteCond %{REQUEST_URI} ^/forum(/?)$ [NC]
RewriteRule ^forum[^/](.*)$ forum_uk/$1 #Dosen't work properly, but without it crash!
RewriteRule ^forum(.*)$ forum_uk$1 [L]

最終的な作業バージョン:

RewriteRule ^forum_pl(.*)$ forum_pl$1 [L]
RewriteRule ^forum_uk(.*)$ forum_uk$1 [L]

RewriteRule ^forum_pl(.*)$ http://www.domena.pl/forum$1 [R=301,L] # Not working!
RewriteRule ^forum_uk(.*)$ http://www.domain.co.uk/forum$1 [R=301,L] # Not working!

# Normalize URL first:
RewriteRule ^forum$ forum/ [R=301,L]

# redirect to polish version of web under forum_pl if on .pl TLD and
#  request is made to /forum/ (already normalized)
RewriteCond %{HTTP_HOST} =www.domena.pl [NC]
RewriteRule ^forum(.*)$ forum_pl$1 [L]

# redirect to english version of web under forum_en in on .uk TLD and
#  request is made to /forum/
RewriteCond %{HTTP_HOST} =www.domain.co.uk [NC]
RewriteRule ^forum(.*)$ forum_uk$1 [L]

ブラウザのforum_ukおよびforum_plフォルダから手動で呼び出すことができるのは残念です。

4

1 に答える 1

1

私があなたの長い質問で正しい方向を向いているかどうかわからない:-)これを試してみましょう:

# Normalize URL first:
RewriteRule ^forum$ forum/ [R=301,L]

# redirect to polish version of web under forum_pl if on .pl TLD and
#  request is made to /forum/ (already normalized)
RewriteCond %{HTTP_HOST} =www.domena.pl [NC]
RewriteRule ^forum/(.*)$ http://www.domena.pl/forum_pl/$1 [R=301,L]

# redirect to english version of web under forum_en in on .uk TLD and
#  request is made to /forum/
RewriteCond %{HTTP_HOST} =www.domain.co.uk [NC]
RewriteRule ^forum/(.*)$ http://www.domain.co.uk/forum_uk/$1 [R=301,L]

異なる行動をとるリワイトが必要な場合は、私に知らせてください

于 2012-11-15T08:34:07.983 に答える