We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
botocore.exceptions.ConnectionClosedError raised when calling change_resource_record_sets (Boto3)
I am not sure whether or not I should expect this to work, but I see there are currently similar tests in moto against boto so I thought I would inquire.

When using the Route53 client from boto3, a call to the change_resource_record_set method raises a botocore.exceptions.ConnectionClosedError. (botocore.exceptions.ConnectionClosedError: Connection was closed before we received a valid response from endpoint URL: "https://route53.amazonaws.com/2013-04-01/hostedzone/cc11c883/rrset/")

A test case to reproduce is below.

``` python
import boto3
import uuid
from moto import mock_route53

def guid():
    return str(uuid.uuid4())

@mock_route53
def test_route53_rrset_fail():

    client = boto3.client('route53')

    # Create a new zone
    zone_name = '{0}.com'.format(guid())
    zone = client.create_hosted_zone(
        Name=zone_name,
        CallerReference=guid(),
        HostedZoneConfig={'Comment': guid()}
    )
    zone_id = zone['HostedZone']['Id']

    # Verify the zone is retrievable
    z = client.get_hosted_zone(Id=zone_id)
    assert z['HostedZone']['Id'] == zone_id

    # Try to create a record set
    # Raises botocore.exceptions.ConnectionClosedError
    client.change_resource_record_sets(
        HostedZoneId=zone_id,
        ChangeBatch={
            'Comment': guid(),
            'Changes': [{
                'Action': 'CREATE',
                'ResourceRecordSet': {
                    'Name': 'foo.{0}'.format(zone_name),
                    'Type': 'A',
                    'ResourceRecords': [{'Value': '1.2.3.4'}]
                }
            }]
        }
    )
```


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `moto/route53/urls.py`
Content:
```
1 from __future__ import unicode_literals
2 from . import responses
3 
4 url_bases = [
5     "https://route53.amazonaws.com/201.-..-../",
6 ]
7 
8 url_paths = {
9     '{0}hostedzone$': responses.list_or_create_hostzone_response,
10     '{0}hostedzone/[^/]+$': responses.get_or_delete_hostzone_response,
11     '{0}hostedzone/[^/]+/rrset$': responses.rrset_response,
12     '{0}healthcheck': responses.health_check_response,
13     '{0}tags|trafficpolicyinstances/*': responses.not_implemented_response,
14 }
15
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/moto/route53/urls.py b/moto/route53/urls.py
--- a/moto/route53/urls.py
+++ b/moto/route53/urls.py
@@ -8,7 +8,7 @@
 url_paths = {
     '{0}hostedzone$': responses.list_or_create_hostzone_response,
     '{0}hostedzone/[^/]+$': responses.get_or_delete_hostzone_response,
-    '{0}hostedzone/[^/]+/rrset$': responses.rrset_response,
+    '{0}hostedzone/[^/]+/rrset/?$': responses.rrset_response,
     '{0}healthcheck': responses.health_check_response,
     '{0}tags|trafficpolicyinstances/*': responses.not_implemented_response,
 }

{"golden_diff": "diff --git a/moto/route53/urls.py b/moto/route53/urls.py\n--- a/moto/route53/urls.py\n+++ b/moto/route53/urls.py\n@@ -8,7 +8,7 @@\n url_paths = {\n     '{0}hostedzone$': responses.list_or_create_hostzone_response,\n     '{0}hostedzone/[^/]+$': responses.get_or_delete_hostzone_response,\n-    '{0}hostedzone/[^/]+/rrset$': responses.rrset_response,\n+    '{0}hostedzone/[^/]+/rrset/?$': responses.rrset_response,\n     '{0}healthcheck': responses.health_check_response,\n     '{0}tags|trafficpolicyinstances/*': responses.not_implemented_response,\n }\n", "issue": "botocore.exceptions.ConnectionClosedError raised when calling change_resource_record_sets (Boto3)\nI am not sure whether or not I should expect this to work, but I see there are currently similar tests in moto against boto so I thought I would inquire.\n\nWhen using the Route53 client from boto3, a call to the change_resource_record_set method raises a botocore.exceptions.ConnectionClosedError. (botocore.exceptions.ConnectionClosedError: Connection was closed before we received a valid response from endpoint URL: \"https://route53.amazonaws.com/2013-04-01/hostedzone/cc11c883/rrset/\")\n\nA test case to reproduce is below.\n\n``` python\nimport boto3\nimport uuid\nfrom moto import mock_route53\n\ndef guid():\n    return str(uuid.uuid4())\n\n@mock_route53\ndef test_route53_rrset_fail():\n\n    client = boto3.client('route53')\n\n    # Create a new zone\n    zone_name = '{0}.com'.format(guid())\n    zone = client.create_hosted_zone(\n        Name=zone_name,\n        CallerReference=guid(),\n        HostedZoneConfig={'Comment': guid()}\n    )\n    zone_id = zone['HostedZone']['Id']\n\n    # Verify the zone is retrievable\n    z = client.get_hosted_zone(Id=zone_id)\n    assert z['HostedZone']['Id'] == zone_id\n\n    # Try to create a record set\n    # Raises botocore.exceptions.ConnectionClosedError\n    client.change_resource_record_sets(\n        HostedZoneId=zone_id,\n        ChangeBatch={\n            'Comment': guid(),\n            'Changes': [{\n                'Action': 'CREATE',\n                'ResourceRecordSet': {\n                    'Name': 'foo.{0}'.format(zone_name),\n                    'Type': 'A',\n                    'ResourceRecords': [{'Value': '1.2.3.4'}]\n                }\n            }]\n        }\n    )\n```\n\n", "before_files": [{"content": "from __future__ import unicode_literals\nfrom . import responses\n\nurl_bases = [\n    \"https://route53.amazonaws.com/201.-..-../\",\n]\n\nurl_paths = {\n    '{0}hostedzone$': responses.list_or_create_hostzone_response,\n    '{0}hostedzone/[^/]+$': responses.get_or_delete_hostzone_response,\n    '{0}hostedzone/[^/]+/rrset$': responses.rrset_response,\n    '{0}healthcheck': responses.health_check_response,\n    '{0}tags|trafficpolicyinstances/*': responses.not_implemented_response,\n}\n", "path": "moto/route53/urls.py"}], "after_files": [{"content": "from __future__ import unicode_literals\nfrom . import responses\n\nurl_bases = [\n    \"https://route53.amazonaws.com/201.-..-../\",\n]\n\nurl_paths = {\n    '{0}hostedzone$': responses.list_or_create_hostzone_response,\n    '{0}hostedzone/[^/]+$': responses.get_or_delete_hostzone_response,\n    '{0}hostedzone/[^/]+/rrset/?$': responses.rrset_response,\n    '{0}healthcheck': responses.health_check_response,\n    '{0}tags|trafficpolicyinstances/*': responses.not_implemented_response,\n}\n", "path": "moto/route53/urls.py"}]}