0

私のクライアントはサイトへのリンクを大文字で印刷しています。私は CI をインストールしており、htaccess またはベース コントローラー (私は今のところ多くのオプションを試しています) を変更して、これらの例のように動作するようにする必要があります (ユーザーがこれをアドレス バーに入力した場合)。

http://www.site.com/HAPPY/chappy -> http://www.site.com/happy/chappy

http://www.SITE.com/HaPpy/CHAPpy -> http://www.site.com/happy/chappy

http://WWW.Site.CoM/happy/chappY -> http://www.site.com/happy/chappy

など... htaccessに「すべてを取り込み、小文字に変換してから処理する」と単純に言わせることができないようです

これも可能ですか..?

4

4 に答える 4

0

はい、テキストが入力されるとすぐに入力を小文字に変換できます。ジャバスクリプトでできます。以下のコードスナイプを参照してください。

function makeLowercase() {
document.form1.outstring.value = document.form1.instring.value.toLowerCase();
}

<input name="outstring" type="text" value="" size="30" onkeyup="makeLowercase();" onblur="makeLowercase();">

または 、PHP でstrtolower()関数を使用して、データを小文字に変換して処理することもできます。

于 2011-11-02T12:30:59.620 に答える
0

.htaccess を使用して、ホスト名の後の部分を書き換えることができます (大文字と小文字は区別されません)。

http://www.chrisabernethy.com/force-lower-case-urls-with-mod_rewrite/

于 2011-11-02T12:31:44.007 に答える
0

CI_Exceptions コア クラスを独自のshow_error関数で拡張します。の元のコードを使用しますがshow_error、次の行に沿って最初に簡単なチェックを追加します。

class MY_Exceptions extends CI_Exceptions {

    /**
     * General Error Page
     *
     * This function takes an error message as input
     * (either as a string or an array) and displays
     * it using the specified template.
     *
     * @access  private
     * @param   string  the heading
     * @param   string  the message
     * @param   string  the template name
     * @return  string
     */
    function show_error($heading, $message, $template = 'error_general', $status_code = 500)
    {
        // First try forwarding to all-lowercase URL if there were caps in the request
        if ($_SERVER['REQUEST_URI'] != strtolower($_SERVER['REQUEST_URI']))
        {
            header('Location: ' . strtolower($_SERVER['REQUEST_URI']));
            return;
        }
        /* Rest of original function to follow... */

必要に応じてカスタマイズし、URI の他の部分を大文字にする必要があることに注意してください。

pre_system (または pre_controller) hookを使用して同様の機能を実現することもできますが、フックが別の目的で既に有効になっている場合にのみ、個人的にはそうします。

于 2011-11-02T14:49:32.103 に答える
0

コア ルーティング ライブラリを拡張して、大文字と小文字を区別しないようにすることができます。そこにstrtolower()関数を配置します。

これを 404 エラー ハンドラに追加するのはお勧めできません。

ソース、LMKが必要な場合は、ライブラリを拡張し、1つの関数をコピーして、strtolower().

于 2011-11-04T01:24:08.467 に答える