get_nginx_item( $item ); } $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'; } 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->match ); return false; } private function add_url( Red_Item $item ) { return $this->add_redirect( $item->get_url(), $item->get_action_data(), $this->get_redirect_code( $item ) ); } private function add_agent( Red_Item $item ) { if ( $item->match->url_from ) { $lines[] = 'if ( $http_user_agent ~* ^'.$item->match->user_agent.'$ ) {'; $lines[] = ' '.$this->add_redirect( $item->get_url(), $item->match->url_from, $this->get_redirect_code( $item ) ); $lines[] = ' }'; } if ( $item->match->url_notfrom ) { $lines[] = 'if ( $http_user_agent !~* ^'.$item->match->user_agent.'$ ) {'; $lines[] = ' '.$this->add_redirect( $item->get_url(), $item->match->url_notfrom, $this->get_redirect_code( $item ) ); $lines[] = ' }'; } return implode( "\n", $lines ); } private function add_referrer( Red_Item $item ) { if ( $item->match->url_from ) { $lines[] = 'if ( $http_referer ~* ^'.$item->match->referrer.'$ ) {'; $lines[] = ' '.$this->add_redirect( $item->get_url(), $item->match->url_from, $this->get_redirect_code( $item ) ); $lines[] = ' }'; } if ( $item->match->url_notfrom ) { $lines[] = 'if ( $http_referer !~* ^'.$item->match->referrer.'$ ) {'; $lines[] = ' '.$this->add_redirect( $item->get_url(), $item->match->url_notfrom, $this->get_redirect_code( $item ) ); $lines[] = ' }'; } return implode( "\n", $lines ); } private function add_redirect( $source, $target, $code ) { $source = preg_replace( "/[\r\n\t].*?$/s", '', $source ); $source = preg_replace( '/[^\PC\s]/u', '', $source ); $target = preg_replace( "/[\r\n\t].*?$/s", '', $target ); $target = preg_replace( '/[^\PC\s]/u', '', $target ); return 'rewrite ^'.$source.'$ '.$target.' '.$code.';'; } }