重定向跳过www的常见做法是什么?

时间:2016-08-02 20:07:50

标签: php .htaccess laravel http web

我想将我的网站宣传为mydomain.com。对我来说它看起来比www.mydomain.com好。通过重定向修剪此www.部分是一种常见做法吗?有人会去www.mydomain.com/books,我会将他重定向到mydomain.com/books。这个想法背后有潜在的陷阱吗?

另一个原因是使第三方回调网址变得简单。目前,我需要将mydomain.com/oauth/googlewww.mydomain.com/oauth/google都声明为我的重定向网址,因为Google认为它们不同。这不是一个大问题,但需要考虑额外的事情。

如果修剪www.是安全的,那怎么能实现呢?我在Apache上使用PHP。我目前的.htaccess看起来像这样:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

4 个答案:

答案 0 :(得分:4)

您应该使用www吗?

您应该在www.example.com或example.com上进行规范化,您选择的主要符合您的偏好。关于哪些是正确的或应该使用的观点各不相同。

no-www.org提倡使用www子域是多余的,因为使用http协议意味着Web。

  

默认情况下,所有流行的Web浏览器都采用HTTP协议。在这样做时,该软件会预先设置&#39; http://&#39;到请求的URL并自动连接到端口80上的HTTP服务器。为什么许多服务器要求他们的网站通过www子域进行通信?邮件服务器不要求您向recipient@mail.domain.com发送电子邮件。同样,除非需要特定的子域,否则Web服务器应允许通过主域访问其页面。

另一方面,

yes-www.org提倡使用www子域名,因为它可以使您的网站更加灵活。通过使用www子域,您可以通过在dns记录中使用CNAME来更轻松地使用CDN /云托管等内容。

  

当使用Heroku或Akamai等提供商来托管您的网站时,提供商希望能够更新DNS记录,以防需要将流量从故障服务器重定向到健康的服务器。这是使用DNS CNAME记录设置的,裸域不能有CNAME记录。

当您在另一个域上托管静态资产时,它还可以帮助防止不必要的Cookie流量。

  

一种常见的网站优化是从子域提供静态内容,例如static.example.com。如果您使用www,那么这没问题;您的网站的Cookie不会被发送到静态子域(除非您明确设置它们)。

一旦你决定

您希望将所有版本的流量重定向到您最终使用的版本。使用apache可以使用mod_rewrite完成,如其他答案所示:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

如果您能够编辑主apache配置,另一个选项是设置两个虚拟主机,其中一个只重定向到另一个。我这样做是为了我的网站而且效果很好。

<VirtualHost *:80>
    ServerName example.com

    Redirect permanent / http://www.example.com/
</VirtualHost>
<VirtualHost *:80>
    ServerName www.example.com
    DocumentRoot /var/www
    #The rest of your configuration
</VirtualHost>

答案 1 :(得分:2)

这是我从SEO角度回答的问题。

正如SEO MOZ在其令人敬畏的Beginner's Guide to SEO中所暗示的那样:

  

通常会出现两个或多个完全相同内容的副本   您的网站在不同的网址下。例如,以下内容   网址都可以引用单个主页:

           

对于搜索引擎,它们显示为五个单独的页面。因为   每个页面上的内容相同,这可能导致搜索   贬值内容及其潜在排名的引擎。

我们可以得出结论,如果您使用或不使用301设置页面,则无关紧要。但是,将HTTP代码.htaccess重定向到一个&#34;统一&#34;是一个好主意。域。为此,Apache 2支持RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 设置:

keys=pygame.key.get_pressed()
if keys[K_LEFT]:
    location -= 0.1 #or 0.01
    if location==-1:
    location=0
if keys[K_RIGHT]:
    location += 0.1 #or 0.01
    if location==5:
        location=4

答案 2 :(得分:0)

您使用.htaccess文件

执行此操作
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

答案 3 :(得分:0)

如果你可以使用.htaccess,你可以用一种简单的方式重定向:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]