Est-il possible de rediriger un sous-domaine incorrect (un sous-domaine inexistant) vers une certaine page (page d'erreur personnalisée)?

EDIT: Utilisation d'un fichier web.config

Par exemple, si je tapais http://foo.squishling.co.uk/, il redirigerait à quelque chose comme http://squishling.co.uk/errors/incorrect_subdomain.html/, car http://foo.squishling.co.uk/ n'est pas correct sous-domaine.

Je n'ai vu aucun code faisant cela, alors est-ce possible?
MODIFIER: si ce n'est pas possible, veuillez le dire

Merci d'avance, ~ Squishling

EDIT: si cela est possible, une façon possible de le faire serait lorsque le serveur reçoit une demande pour le sous-domaine incorrect, il suffit de tromper la demande en demandant une page d'erreur

5
Squishling 28 août 2017 à 16:32

2 réponses

Essaye celui-là. Référence de https://stackoverflow.com/a/10662732/7877099

<configuration>
    <system.webServer>
        <httpRedirect enabled="true" destination="http://squishling.co.uk/errors/" exactDestination="true" httpResponseStatus="Permanent" />
    </system.webServer>
    <location path="incorrect_subdomain.html">
        <system.webServer>
            <httpRedirect enabled="false" />
        </system.webServer>
    </location>
</configuration>
-1
Isuru Dilshan 7 févr. 2018 à 19:13

Sûr que vous pouvez. Voici une configuration nginx minimale faisant ceci:

server {
    listen 80 default_server;
    server_name _;
    location / {
        rewrite ^.*$ http://squishling.co.uk/errors/incorrect_subdomain.html redirect;
    }
}

server {
    listen 80;
    server_name squishling.co.uk;

    location / {
        echo some page;
    }

    location /errors/incorrect_subdomain.html {
        echo incorrect subdomain error;
    }
}

Voici comment l'exécuter:

  1. mkdir conf.d
  2. mettez le fichier de configuration ci-dessus dans conf.d/main.conf
  3. docker run -p80:80 -v ~/work/test/subreq/conf.d:/etc/nginx/conf.d openresty/openresty:alpine

Essai

squishling.co.uk et foo.squishling.co.uk sont remplacés dans mon /etc/hosts afin qu'ils dirigent vers mon hôte local

curl -D - http://squishling.co.uk
HTTP/1.1 200 OK
Server: openresty/1.13.6.1
Date: Tue, 06 Feb 2018 18:49:25 GMT
Content-Type: application/octet-stream
Transfer-Encoding: chunked
Connection: keep-alive

some page

Maintenant, essayez le mauvais domaine

curl -D - http://foo.squishling.co.uk
HTTP/1.1 302 Moved Temporarily
Server: openresty/1.13.6.1
Date: Tue, 06 Feb 2018 18:49:34 GMT
Content-Type: text/html
Content-Length: 167
Connection: keep-alive
Location: http://squishling.co.uk/errors/incorrect_subdomain.html

<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>
<hr><center>openresty/1.13.6.1</center>
</body>
</html>

Ou le même après la redirection:

curl -L -D - http://foo.squishling.co.uk
HTTP/1.1 302 Moved Temporarily
Server: openresty/1.13.6.1
Date: Tue, 06 Feb 2018 18:50:03 GMT
Content-Type: text/html
Content-Length: 167
Connection: keep-alive
Location: http://squishling.co.uk/errors/incorrect_subdomain.html

HTTP/1.1 200 OK
Server: openresty/1.13.6.1
Date: Tue, 06 Feb 2018 18:50:03 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive

incorrect subdomain error

L'idée principale est donc de définir la configuration du serveur default qui intercepterait tous les domaines en plus de ceux ayant des configurations individuelles. La même chose peut être accomplie dans d'autres serveurs Web aussi

0
ffeast 6 févr. 2018 à 18:57