3

わかりました。これを理解するために多くの時間を無駄にしましたが、ルールの書き換えについて学習しようとすればするほど、何が起こっているのか理解できなくなるようです。codeigniterベースのプロジェクトの書き換えルールを修正する必要があります。

このアプリケーションは、基本的にモジュール、ページ、投稿で機能する多言語CMSであり、.htaccessファイル内でURLがページか投稿かを確認し、適切なコントローラーにリダイレクトする必要があります。

これまでのところ、私の.htaccessファイルには次のものがあります。

    #if I'm on the homepage and i have a language id
    RewriteCond $1 ^([a-z]{2})/?$
    RewriteRule ^(.*)$ index.php?homepage/index/$1 [PT,L]

    #if module - this works ok when there is no language id
    RewriteCond $1 ^(gallery|post|products)
    RewriteRule ^(.*)$ index.php?$1 [PT,L]

    # Rewrite all other URLs to index.php/URL - page controller
    RewriteRule ^(.*)$ index.php?page/show/$0 [PT,L]

上記のコードで、私が入力した場合

http://mydomain.com/gallery/something/9

次のような言語IDを追加すると、すべてが正常でダンディになります。

http://mydomain.com/en/gallery/something/9

それはもう動作しません、そして私はページコントローラーからページが見つかりません/ 404エラーを受け取ります(.htaccessの終わりにリダイレクトします)。

だから私はこのようなものになることができるURLを持っているとしましょう:

    http://mydomain.com/gallery/something/9       
    http://mydomain.com/en/gallery/something/25
    http://mydomain.com/fr/post/something/31

どういうわけかそれらのURLをにリダイレクトする必要があります

     http://mydomain.com/gallery/something/9        
     http://mydomain.com/en/gallery/somethingelse/25
     http://mydomain.com/fr/post/somethingelse/31

言語IDを持っている場合と持っていない場合があることに注意してください。これは、htaccessを使用して実行する必要があることですか?Codeigniterルーティングはより良い代替手段ですか?助けてくれてありがとうStackOverflow:)

4

1 に答える 1

1

それを試してください:

RewriteCond $1 ^[^/]*/?(gallery|post|products)
于 2012-12-24T00:36:56.630 に答える