3

我只想php_value为特定的 url(重写)路径设置一个标志。我正在使用 htaccess 来完成此操作。我使用的框架是 CodeIgniter,所以只有一个 htaccess 文件,url 路由由 php 处理。

只有网站的后端应该有php_value max_input_vars 3000. 网址是http://www.example.com/admin/dashboard

我在htaccess文件中考虑过这个:

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

3 回答 3

4

好的,因为您无法将 Apache 升级到最新版本,这里是一种解决此条件设置的方法。

1 - 在DOCUMENT_ROOT运行此命令创建符号链接index.phpas__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 <LocationMatch>which 需要在您的服务器配置或虚拟主机中设置(因为您不能使用<Location>or <LocationMatch>in .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 回答