redirect_code_generator 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/README.md +2 -2
- data/lib/redirect_code_generator/apache_rewrite_normalize.rb +16 -0
- data/lib/redirect_code_generator/erb_templates.rb +10 -10
- data/lib/redirect_code_generator/generator/apache.rb +28 -4
- data/lib/redirect_code_generator/generator/generator.rb +0 -2
- data/lib/redirect_code_generator/version.rb +1 -1
- metadata +3 -3
- data/lib/redirect_code_generator/sanitizer.rb +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bb3b5ce617aeb53103a1f93dfa01154e46133dde
|
4
|
+
data.tar.gz: 72d48d2b52d6f26f271bbb54dc7b516ed38a7591
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ac183ba6f2af987ccd14f8f987b1992d701d91e37ef3d3f549f3f4ff41599cda43122cd05be778dfd772bcbb9e63b9424979ce715c3de3ba9120fe9db8fa952c
|
7
|
+
data.tar.gz: e4e5d7d585657a69b0348fa4d354b48056f09af721fc94bd7a03964bdc0b5627db0bcf388eda9dec5d3282bb70ccbf48b4e55f850b23e4bd5961aef5c786eb68
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# RedirectCodeGenerator
|
2
2
|
|
3
|
-
RedirectCodeGenerator creates Apache redirect code
|
3
|
+
RedirectCodeGenerator creates Apache redirect code.
|
4
4
|
|
5
5
|
[](https://travis-ci.org/tsmsogn/redirect_code_generator)
|
6
6
|
|
@@ -11,7 +11,7 @@ $ ./create_apache_redirect_code /old_dir /new_dir
|
|
11
11
|
# 301 /old_dir -> /new_dir
|
12
12
|
<IfModule mod_rewrite.c>
|
13
13
|
RewriteEngine On
|
14
|
-
RewriteRule
|
14
|
+
RewriteRule ^/?old_dir$ /new_dir? [R=301,L]
|
15
15
|
</IfModule>
|
16
16
|
```
|
17
17
|
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'uri'
|
2
|
+
|
3
|
+
|
4
|
+
module RedirectCodeGenerator
|
5
|
+
module ApacheRewriteNormalize
|
6
|
+
def to_rewrite_rule_path(path)
|
7
|
+
path.gsub(/^\//, "/?")
|
8
|
+
end
|
9
|
+
|
10
|
+
def escape(str)
|
11
|
+
Regexp.escape(str)
|
12
|
+
end
|
13
|
+
|
14
|
+
module_function :to_rewrite_rule_path, :escape
|
15
|
+
end
|
16
|
+
end
|
@@ -2,24 +2,24 @@ module RedirectCodeGenerator
|
|
2
2
|
module ERBTemplates
|
3
3
|
|
4
4
|
APACHE = <<CODE
|
5
|
-
# <%=
|
5
|
+
# <%= redirect_http_status_code %> <%= old %> -> <%= new %>
|
6
6
|
<IfModule mod_rewrite.c>
|
7
7
|
RewriteEngine On
|
8
|
-
<% if default_port? &&
|
9
|
-
RewriteCond %{HTTPS} <% if
|
8
|
+
<% if default_port? && old_uri.scheme %>
|
9
|
+
RewriteCond %{HTTPS} <% if old_uri.scheme == 'https'%>on<% else %>off<% end %>
|
10
10
|
<% end %>
|
11
|
-
<% if
|
12
|
-
RewriteCond %{HTTP_HOST} ^<%= escape? ? escape(
|
11
|
+
<% if old_uri.host %>
|
12
|
+
RewriteCond %{HTTP_HOST} ^<%= escape? ? escape(old_uri.host) : old_uri.host %>$
|
13
13
|
<% end %>
|
14
|
-
<% if !default_port? &&
|
15
|
-
RewriteCond %{SERVER_PORT} <%=
|
14
|
+
<% if !default_port? && old_uri.scheme %>
|
15
|
+
RewriteCond %{SERVER_PORT} <%= old_uri.port %>
|
16
16
|
<% end %>
|
17
|
-
<% if
|
18
|
-
<%
|
17
|
+
<% if old_uri.query %>
|
18
|
+
<% old_uri.query.split('&').each do |param| %>
|
19
19
|
RewriteCond %{QUERY_STRING} (^|&)<%= param %>($|&)
|
20
20
|
<% end %>
|
21
21
|
<% end %>
|
22
|
-
RewriteRule ^<%=
|
22
|
+
RewriteRule ^<%= rewrite_rule_source_path %>$ <%= new %>? [R=<%= redirect_http_status_code %>,L]
|
23
23
|
</IfModule>
|
24
24
|
CODE
|
25
25
|
|
@@ -1,8 +1,10 @@
|
|
1
1
|
require "redirect_code_generator/generator/generator"
|
2
|
+
require "redirect_code_generator/apache_rewrite_normalize"
|
2
3
|
|
3
4
|
module RedirectCodeGenerator
|
4
5
|
module Generator
|
5
6
|
class Apache < Generator
|
7
|
+
include ApacheRewriteNormalize
|
6
8
|
attr_reader :old, :new
|
7
9
|
|
8
10
|
def initialize(old, new, permanent = true, escape = true)
|
@@ -14,8 +16,12 @@ module RedirectCodeGenerator
|
|
14
16
|
erb.result(binding)
|
15
17
|
end
|
16
18
|
|
17
|
-
def
|
18
|
-
@
|
19
|
+
def old_uri
|
20
|
+
@old_uri ||= URI.parse(@old)
|
21
|
+
end
|
22
|
+
|
23
|
+
def new_uri
|
24
|
+
@new_uri ||= URI.parse(@new)
|
19
25
|
end
|
20
26
|
|
21
27
|
def permanent?
|
@@ -26,10 +32,28 @@ module RedirectCodeGenerator
|
|
26
32
|
@escape
|
27
33
|
end
|
28
34
|
|
35
|
+
def rewrite_rule_source_path
|
36
|
+
path = old_uri.path
|
37
|
+
if escape?
|
38
|
+
path = escape(path)
|
39
|
+
end
|
40
|
+
|
41
|
+
to_rewrite_rule_path(path)
|
42
|
+
end
|
43
|
+
|
44
|
+
def redirect_http_status_code
|
45
|
+
case permanent?
|
46
|
+
when true then
|
47
|
+
301
|
48
|
+
when false then
|
49
|
+
302
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
29
53
|
def default_port?
|
30
|
-
if
|
54
|
+
if old_uri.scheme == 'http' && old_uri.port == 80
|
31
55
|
true
|
32
|
-
elsif
|
56
|
+
elsif old_uri.scheme == 'https' && old_uri.port == 443
|
33
57
|
true
|
34
58
|
else
|
35
59
|
false
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redirect_code_generator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- tsmsogn
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-02-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -72,12 +72,12 @@ files:
|
|
72
72
|
- bin/setup
|
73
73
|
- create_apache_redirect_code
|
74
74
|
- lib/redirect_code_generator.rb
|
75
|
+
- lib/redirect_code_generator/apache_rewrite_normalize.rb
|
75
76
|
- lib/redirect_code_generator/erb_factory.rb
|
76
77
|
- lib/redirect_code_generator/erb_templates.rb
|
77
78
|
- lib/redirect_code_generator/generator/apache.rb
|
78
79
|
- lib/redirect_code_generator/generator/generator.rb
|
79
80
|
- lib/redirect_code_generator/generator_factory.rb
|
80
|
-
- lib/redirect_code_generator/sanitizer.rb
|
81
81
|
- lib/redirect_code_generator/version.rb
|
82
82
|
- redirect_code_generator.gemspec
|
83
83
|
homepage: https://github.com/tsmsogn/redirect_code_generator
|