2017-09-26 23 views
1

好,所以今天我得到了一个新的VPS服务器,因为有大量的域名被指向我的旧域名 - 我没有以前的域名指向我的新IP。我现在已经使用Ubuntu 16.04安装了服务器 - 以前是Centos 7.我已经尝试了所有可以使用.htacccess工作的虚拟主机。下面我已经链接了所有的文件!Apache安装错误 - .htaccess似乎不工作

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

我的问题是你有什么我设置错在这里,目标是我要确保,如果任何域指向我的原产地它会自动改写为mydomain.com - 我也希望有我的起源IP也要么拒绝访问或重写主站点。我也不确定如何检查我的重写是否在不同的浏览器之间发生不同的操作。

+0

是否启用了mod_rewrite?它在Ubuntu 16.04中默认不启用。 'sudo a2enmod rewrite',如果你还没有'sudo service apache2 restart'使其生效。另外,我个人更喜欢将我的AllowOverride语句限制为我需要的最低限度。如果你只需要启用重写,那么'AllowOverride FileInfo'就是必要的。 – blendenzo

+0

您好@blendenzo - 我已经启用了at2nmod重写,但我不确定它的任何工作 - 并且您能否使用我的代码来解释您的第二点。 – InfamyStudio

+0

@blendenzo - 当你只是说我需要AllowOverride FileInfo - 我明白你的意思,只是加载一个模块,限制语句 - 但什么是FileInfo声明 - 在哪里引用? – InfamyStudio

回答

1

(我用example.com这个答案,因为MYDOMAIN是不允许在信息上的计算器)

没有与您的.htaccess文件的一些问题。首先,看看这个行:

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

你不应该包括 “HTTP://” 当你测试{HTTP_HOST},所以应该这样写的,而不是:

RewriteCond %{HTTP_HOST} !^example.com$ 

二,看看这个行:

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

我从来没有见过任何人测试这样的HTTPS之前,我甚至不能找到HTTPS_HOST在mod_rewrite documentation。我知道需要HTTPS的多种常用方法。这里有几个人,但你只需要使用一个:

# 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 

所以采取了一起,下面的重写规则应该做你想要什么:

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

工作真的很好的人! - 在这个重写RewriteRule ^(。*)$ https://example.com% {REQUEST_URI} [R = 301,L]是{REQUEST_URI}只是说要在目标位置转发他们要去的地方? – InfamyStudio

+0

是的,这正是{REQUEST_URI}所做的。所以如果他们试图去'http://例子。com/about_us /'他们会被转发到'https:// example.com/about_us /'。值得注意的是:上述规则不处理“www.example.com”。如果你希望它也能捕捉到,请将第一行更改为'RewriteCond%{HTTP_HOST}!(www \。)?example.com $'这将检查可选的“www。” (我不妨更新包含该答案的) – blendenzo

+0

在我的cloudflare页面规则中 - 我已经设置了一条规则,规定任何www.example.com将被重定向到https://example.com - 但我想这会不要继续{REQUEST_URI} – InfamyStudio