3

php_value特定の url (書き換え) パスのみにフラグを設定したい。これを達成するためにhtaccessを使用しています。私が使用しているフレームワークは CodeIgniter であるため、htaccess ファイルが 1 つあり、url ルートは php によって処理されます。

Web サイトのバックエンドのみにphp_value max_input_vars 3000. URL はhttp://www.example.com/admin/dashboardです。

私はhtaccessファイルでこれについて考えていました:

<Location /website.com/admin>
    php_value max_input_vars 20000
</Location>
4

3 に答える 3

4

Apache を最新バージョンにアップグレードすることはできないため、ここでは、この条件付き設定を行う1 つの回避策を示します。

1 - [DOCUMENT_ROOTこのコマンドを実行して、次のシンボリック リンクを作成します]index.php__anything.php

ln -s index.php __anything.php

2 - 新しいコードを行のDOCUMENT_ROOT/.htaccessすぐ下に配置しRewriteEngine Onます。全体的.htaccessには次のようになります。

# forward all URLs starting with /admin/ to __anything.php
RewriteRule ^(admin(?:/.*|))$ __anything.php?/$1 [L,NC]

# set max_input_vars to 2000 for file __anything.php
<FilesMatch "^__anything\.php">
    php_value max_input_vars 20000
</FilesMatch>

# your regular Codeignitor controller code
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

PS:私は CI をインストールしていないので、実際にこれを CI でテストすることはできませんが、それ以外の場合はこれをテストしてmax_input_vars価値を高めました。

于 2013-09-11T22:33:05.123 に答える
1

次を使用できますadmin。Codeigniter のコントローラーは次のとおりです。

<FilesMatch "^(admin)">
    php_value max_input_vars 20000
</FilesMatch>

複数の CI コントローラーをターゲットにしたい場合は、それらをパイプで区切ることができます:

<FilesMatch "^(admin|another)">
    php_value max_input_vars 20000
</FilesMatch>

これはおそらくあなたが探していることを行う最良の方法ではありませんが、うまくいきます。<Location>サーバー構成または仮想ホストで設定する必要があるorを使用することをお勧めします ( orでは<LocationMatch>使用できないため)。<Location><LocationMatch>.htaccess

その例は次のとおりです。

<Location /admin>
    php_value max_input_vars 20000
<Location>
于 2013-09-06T17:31:43.240 に答える
1

管理コントローラの初期化中に、php コードでハードコーディングされた値を設定しようとするとどうなりますか。

<?php
ini_set('max_input_vars', 2000);

サーバー構成で実行時にiniを変更できる場合は機能するはずです。

于 2013-09-12T06:29:00.843 に答える