2017-09-26 2 views
1

Ok donc aujourd'hui j'ai eu un nouveau serveur de VPS dû au fait qu'un grand nombre de domaines ont été pointés vers mon vieux domaine - je n'ai aucun domaine précédent pointant vers ma nouvelle IP. J'ai maintenant installé le serveur avec Ubuntu 16.04 - précédent étant Centos 7. J'ai tout essayé pour obtenir .htacccess au travail et mes hôtes virtuels. Ci-dessous, j'ai lié tous les fichiers!Erreur d'installation d'Apache - .htaccess semble ne pas fonctionner

.htaccess https://pastebin.ubuntu.com/25622957/ 
000-default.conf https://pastebin.ubuntu.com/25622958/ 
apache2.conf https://pastebin.ubuntu.com/25622964/ 

Ma question est ce que je configurer mal ici et le but est que je veux vous assurer que si un domaine est pointé à mon origine, il va réécrire automatiquement mydomain.com - Je veux aussi avoir mon origine IP aussi refuser l'accès ou réécrire sur le site principal. Je ne sais pas non plus comment vérifier si mes réécritures fonctionnent même entre différents navigateurs.

+0

Avez-vous activé mod_rewrite? Il n'est pas activé par défaut dans Ubuntu 16.04. 'sudo a2enmod rewrite' si vous n'avez pas déjà' sudo service apache2 restart' pour que cela prenne effet. En outre, je préfère personnellement limiter mes instructions AllowOverride au strict minimum dont j'ai besoin. Si vous avez seulement besoin d'activer la réécriture, 'AllowOverride FileInfo' est tout ce qui est nécessaire. – blendenzo

+0

Salut @blendenzo - J'ai déjà activé la réécriture de at2nmod mais je ne suis pas sûr si son fonctionnement - et pouvez-vous utiliser mon code pour expliquer votre deuxième point s'il vous plaît. – InfamyStudio

+0

@blendenzo - quand vous dites juste que j'ai besoin de AllowOverride FileInfo - je comprends ce que vous voulez dire en chargeant simplement un module, pour limiter les instructions - mais que déclare FileInfo - où est ce référencement? – InfamyStudio

Répondre

1

(je l'ai utilisé example.com dans cette réponse, car mondomaine est pas autorisé dans les messages sur stackoverflow)

Il y a quelques problèmes avec votre fichier .htaccess. D'abord, regardez cette ligne:

RewriteCond %{HTTP_HOST} !^http://example.com$ 

Vous ne devriez pas inclus "http: //" lorsque vous testez le {HTTP_HOST}, il devrait donc se lire comme ceci:

RewriteCond %{HTTP_HOST} !^example.com$ 

deuxième , regardez cette ligne:

RewriteCond %{HTTPS_HOST} !^https://example.com$ 

Je ne l'ai jamais vu quelqu'un test pour HTTPS comme ça avant, et je ne trouve même HTTPS_HOST dans le mod_rewrite documentation. Je connais des méthodes communes multiples pour exiger HTTPS. Voici quelques-unes d'entre elles, mais il vous suffit d'utiliser un:

# Methods of checking the port 
RewriteCond %{SERVER_PORT} !80$ #True if traffic came in on HTTP port 80 
RewriteCond %{SERVER_PORT} !^443$ #True if traffic did not come in on HTTPS port 443 

# Methods of checking the HTTPS status 
RewriteCond %{HTTPS} off #True if HTTPS is off 
RewriteCond %{HTTPS} !=on #True if HTTPS is not on 

donc pris tous ensemble, la règle de réécriture suivante devrait faire ce que vous voulez:

RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$ 
RewriteCond %{HTTPS} !=on 
RewriteRule ^(.*)$ https://example.com%{REQUEST_URI} [R=301,L] 
+0

fonctionne vraiment bien l'homme! - Dans cette réécriture RewriteRule^(. *) $ Https: //example.com% {REQUEST_URI} [R = 301, L] est-ce que le {REQUEST_URI} indique simplement qu'il doit rediriger vers l'emplacement ciblé? – InfamyStudio

+0

Oui, c'est exactement ce que fait {REQUEST_URI}. Donc, s'ils ont essayé d'aller à 'http: // exemple.com/about_us/'ils seraient redirigés vers' https: // example.com/about_us/'. A noter: la règle ci-dessus ne gère pas "www.example.com". Si vous voulez qu'il attrape cela aussi, changez la première ligne en 'RewriteCond% {HTTP_HOST}! (Www \.)? Example.com $' Cela va vérifier un "www" optionnel. (Je pourrais aussi bien mettre à jour la réponse pour l'inclure) – blendenzo

+0

Dans mes règles de page cloudflare - J'ai mis en place une règle qui stipule que tout www.example.com sera redirigé vers https://example.com - Mais je suppose que cela serait alors ne pas reporter le {REQUEST_URI} – InfamyStudio