【发布时间】:2018-10-14 17:42:31
【问题描述】:
我想要特定路线的特定 htaccess 文件。
例如,我想允许所有 ips 访问我网站的主路由,但阻止特定 ips 访问仅支付路由或特定路由。
请帮我解决这个问题。
【问题讨论】:
我想要特定路线的特定 htaccess 文件。
例如,我想允许所有 ips 访问我网站的主路由,但阻止特定 ips 访问仅支付路由或特定路由。
请帮我解决这个问题。
【问题讨论】:
你可以使用三种解决方案:
laravelmiddleware
这里:
namespace App\Http\Middleware;
use Closure;
use Symfony\Component\HttpFoundation\IpUtils;
class RedirectInvalidIPs
{
protected $ips = [
'65.202.143.122',
'148.185.163.203'
];
protected $ipRanges = [
'10.11.3.1',
];
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
foreach ($request->getClientIps() as $ip) {
if (! $this->isValidIp($ip) && ! $this->isValidIpRange($ip)) {
return redirect('/');
}
}
return $next($request);
}
protected function isValidIp($ip)
{
return in_array($ip, $this->ips);
}
protected function isValidIpRange($ip)
{
return IpUtils::checkIp($ip, $this->ipRanges);
}
}
这里:
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REQUEST_URI} /thisdirectoryandallcontents
RewriteCond %{REMOTE_ADDR} !=111.111.111.111
RewriteRule ^.*$ /maintenance.php [R=302,L]
【讨论】:
您应该使用middleware 进行访问控制,.htaccess“可以”在技术上用于此目的,但强烈建议不要这样做。
基于ip过滤的可能逻辑粗略示例,可以放在新创建的中间件的句柄函数中:
if (!in_array($request->ip, ['127.0.0.1', '::1'])) {
abort(403);
}
return $next($request);
【讨论】: