File "nginx.php"
Full path: /home/kosmetik/public_html/wp-content/plugins/redirection/fileio/nginx.php
File
size: 3.97 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
class Red_Nginx_File extends Red_FileIO
{
public function force_download()
{
parent::force_download();
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $this->export_filename('nginx') . '"');
}
public function get_data(array $items, array $groups)
{
$lines = array();
$version = red_get_plugin_data(dirname(dirname(__FILE__)) . '/redirection.php');
$lines[] = '# Created by Redirection';
$lines[] = '# ' . date('r');
$lines[] = '# Redirection ' . trim($version['Version']) . ' - https://redirection.me';
$lines[] = '';
$lines[] = 'server {';
$parts = array();
foreach ($items as $item) {
if ($item->is_enabled()) {
$parts[] = $this->get_nginx_item($item);
}
}
$lines = array_merge($lines, array_filter($parts));
$lines[] = '}';
$lines[] = '';
$lines[] = '# End of Redirection';
return implode(PHP_EOL, $lines) . PHP_EOL;
}
private function get_redirect_code(Red_Item $item)
{
if ($item->get_action_code() === 301) {
return 'permanent';
}
return 'redirect';
}
public function load($group, $data, $filename = '')
{
return 0;
}
private function get_nginx_item(Red_Item $item)
{
$target = 'add_' . $item->get_match_type();
if (method_exists($this, $target)) {
return ' ' . $this->{$target}($item, $item->get_match_data());
}
return false;
}
private function add_url(Red_Item $item, array $match_data)
{
return $this->get_redirect($item->get_url(), $item->get_action_data(), $this->get_redirect_code($item), $match_data['source'], $item->source_flags->is_regex());
}
private function add_agent(Red_Item $item, array $match_data)
{
if ($item->match->url_from) {
$lines[] = 'if ( $http_user_agent ~* ^' . $item->match->user_agent . '$ ) {';
$lines[] = ' ' . $this->get_redirect($item->get_url(), $item->match->url_from, $this->get_redirect_code($item), $match_data['source']);
$lines[] = ' }';
}
if ($item->match->url_notfrom) {
$lines[] = 'if ( $http_user_agent !~* ^' . $item->match->user_agent . '$ ) {';
$lines[] = ' ' . $this->get_redirect($item->get_url(), $item->match->url_notfrom, $this->get_redirect_code($item), $match_data['source']);
$lines[] = ' }';
}
return implode("\n", $lines);
}
private function add_referrer(Red_Item $item, array $match_data)
{
if ($item->match->url_from) {
$lines[] = 'if ( $http_referer ~* ^' . $item->match->referrer . '$ ) {';
$lines[] = ' ' . $this->get_redirect($item->get_url(), $item->match->url_from, $this->get_redirect_code($item), $match_data['source']);
$lines[] = ' }';
}
if ($item->match->url_notfrom) {
$lines[] = 'if ( $http_referer !~* ^' . $item->match->referrer . '$ ) {';
$lines[] = ' ' . $this->get_redirect($item->get_url(), $item->match->url_notfrom, $this->get_redirect_code($item), $match_data['source']);
$lines[] = ' }';
}
return implode("\n", $lines);
}
private function get_redirect($line, $target, $code, $source, $regex = false)
{
$line = ltrim($line, '^');
$line = rtrim($line, '$');
$source_url = new Red_Url_Encode($line, $regex);
$target_url = new Red_Url_Encode($target);
$from = $source_url->get_as_source();
$from = ltrim($from, '^');
$from = rtrim($from, '$');
if (isset($source['flag_case']) && $source['flag_case']) {
$from = '(?i)^' . $from;
} else {
$from = '^' . $from;
}
return 'rewrite ' . $from . '$ ' . $target_url->get_as_target() . ' ' . $code . ';';
}
}