2016-07-12 4 views
1

ich wan zwei Dingewie www vom Domain-Namen entfernen und https erzwingen?

  1. entfernen www von Domain
  2. erzwingen https Name

dh

http:// www.example.org should be redirect to https://example.org 
https:// www.example.org should be redirect to https://example.org 

UPDATE zu erreichen:

verwende ich zur Zeit folge ich ng .htaccess Regel

<IfModule mod_rewrite.c> 
    RewriteCond %{HTTPS} !=on 
    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
    RewriteRule^https://%1%{REQUEST_URI} [R=301,L] 
</IfModule> 

Diese Regel gibt die www von URL nicht entfernen, wenn vorhanden, ich den Benutzer auf https umgeleitet. Dies geschieht nur, wenn ich www in URL habe. Wenn ich mit http://exampl.org auf meine Site zugreife, wird sie nicht auf https umgeleitet. Wie kann ich beides erreichen?

1) entfernen www von url

2) enforece https

Hier ist meine .htaccess-Datei, ich habe die genannten Antworten versucht, aber er scheint nicht

# ---------------------------------------------------------------------- 
    # Better website experience for IE users 
    # ---------------------------------------------------------------------- 

    # Force the latest IE version, in various cases when it may fall back to IE7 mode 
    # github.com/rails/rails/commit/123eb25#commitcomment-118920 
    # Use ChromeFrame if it's installed for a better experience for the poor IE folk 

    <IfModule mod_headers.c> 
     Header set X-UA-Compatible "IE=Edge,chrome=1" 
     # mod_headers can't match by content-type, but we don't want to send this header on *everything*... 
     <FilesMatch "\.(js|css|gif|png|jpe?g|pdf|xml|oga|ogg|m4a|ogv|mp4|m4v|webm|svg|svgz|eot|ttf|otf|woff|ico|webp|appcache|manifest|htc|crx|oex|xpi|safariextz|vcf)$" > 
     Header unset X-UA-Compatible 
     </FilesMatch> 
    </IfModule> 

    # ---------------------------------------------------------------------- 
    # CORS-enabled images (@crossorigin) 
    # ---------------------------------------------------------------------- 

    # Send CORS headers if browsers request them; enabled by default for images. 
    # developer.mozilla.org/en/CORS_Enabled_Image 
    # blog.chromium.org/2011/07/using-cross-domain-images-in-webgl-and.html 
    # hacks.mozilla.org/2011/11/using-cors-to-load-webgl-textures-from-cross-domain-images/ 
    # wiki.mozilla.org/Security/Reviews/crossoriginAttribute 

    <IfModule mod_setenvif.c> 
     <IfModule mod_headers.c> 
     # mod_headers, y u no match by Content-Type?! 
     <FilesMatch "\.(gif|png|jpe?g|svg|svgz|ico|webp)$"> 
      SetEnvIf Origin ":" IS_CORS 
      Header set Access-Control-Allow-Origin "*" env=IS_CORS 
     </FilesMatch> 
     </IfModule> 
    </IfModule> 


    # ---------------------------------------------------------------------- 
    # Webfont access 
    # ---------------------------------------------------------------------- 

    # Allow access from all domains for webfonts. 
    # Alternatively you could only whitelist your 
    # subdomains like "subdomain.example.com". 

    <IfModule mod_headers.c> 
     <FilesMatch "\.(ttf|ttc|otf|eot|woff|font.css)$"> 
     Header set Access-Control-Allow-Origin "*" 
     </FilesMatch> 
    </IfModule> 


    # ---------------------------------------------------------------------- 
    # Proper MIME type for all files 
    # ---------------------------------------------------------------------- 

    # JavaScript 
    # Normalize to standard type (it's sniffed in IE anyways) 
    # tools.ietf.org/html/rfc4329#section-7.2 
    AddType application/javascript   js jsonp 
    AddType application/json    json 

    # Audio 
    AddType audio/ogg      oga ogg 
    AddType audio/mp4      m4a f4a f4b 

    # Video 
    AddType video/ogg      ogv 
    AddType video/mp4      mp4 m4v f4v f4p 
    AddType video/webm      webm 
    AddType video/x-flv     flv 

    # SVG 
    # Required for svg webfonts on iPad 
    # twitter.com/FontSquirrel/status/14855840545 
    AddType  image/svg+xml    svg svgz 
    AddEncoding gzip      svgz 

    # Webfonts 
    AddType application/vnd.ms-fontobject eot 
    AddType application/x-font-ttf   ttf ttc 
    AddType font/opentype     otf 
    AddType application/x-font-woff  woff 

    # Assorted types 
    AddType image/x-icon      ico 
    AddType image/webp       webp 
    AddType text/cache-manifest     appcache manifest 
    AddType text/x-component     htc 
    AddType application/xml      rss atom xml rdf 
    AddType application/x-chrome-extension  crx 
    AddType application/x-opera-extension  oex 
    AddType application/x-xpinstall    xpi 
    AddType application/octet-stream   safariextz 
    AddType application/x-web-app-manifest+json webapp 
    AddType text/x-vcard      vcf 
    AddType application/x-shockwave-flash  swf 
    AddType text/vtt       vtt 

    # ---------------------------------------------------------------------- 
    # Gzip compression 
    # ---------------------------------------------------------------------- 

    <IfModule mod_deflate.c> 

     # Force deflate for mangled headers developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping/ 
     <IfModule mod_setenvif.c> 
     <IfModule mod_headers.c> 
      SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding 
      RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding 
     </IfModule> 
     </IfModule> 

     # Compress all output labeled with one of the following MIME-types 
     <IfModule mod_filter.c> 
     AddOutputFilterByType DEFLATE application/atom+xml \ 
             application/javascript \ 
             application/json \ 
             application/rss+xml \ 
             application/vnd.ms-fontobject \ 
             application/x-font-ttf \ 
             application/xhtml+xml \ 
             application/xml \ 
             font/opentype \ 
             image/svg+xml \ 
             image/x-icon \ 
             text/css \ 
             text/html \ 
             text/plain \ 
             text/x-component \ 
             text/xml 
     </IfModule> 

    </IfModule> 


    # ---------------------------------------------------------------------- 
    # Expires headers (for better cache control) 
    # ---------------------------------------------------------------------- 

    # These are pretty far-future expires headers. 
    # They assume you control versioning with filename-based cache busting 
    # Additionally, consider that outdated proxies may miscache 
    # www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/ 

    # If you don't use filenames to version, lower the CSS and JS to something like 
    # "access plus 1 week". 

    <IfModule mod_expires.c> 
     ExpiresActive on 

    # Perhaps better to whitelist expires rules? Perhaps. 
     ExpiresDefault       "access plus 1 month" 

    # cache.appcache needs re-requests in FF 3.6 (thanks Remy ~Introducing HTML5) 
     ExpiresByType text/cache-manifest  "access plus 0 seconds" 

    # Your document html 
     ExpiresByType text/html     "access plus 0 seconds" 

    # Data 
     ExpiresByType text/xml     "access plus 0 seconds" 
     ExpiresByType application/xml   "access plus 0 seconds" 
     ExpiresByType application/json   "access plus 0 seconds" 

    # Feed 
     ExpiresByType application/rss+xml  "access plus 1 hour" 
     ExpiresByType application/atom+xml  "access plus 1 hour" 

    # Favicon (cannot be renamed) 
     ExpiresByType image/x-icon    "access plus 1 week" 

    # Media: images, video, audio 
     ExpiresByType image/gif     "access plus 1 month" 
     ExpiresByType image/png     "access plus 1 month" 
     ExpiresByType image/jpeg    "access plus 1 month" 
     ExpiresByType video/ogg     "access plus 1 month" 
     ExpiresByType audio/ogg     "access plus 1 month" 
     ExpiresByType video/mp4     "access plus 1 month" 
     ExpiresByType video/webm    "access plus 1 month" 

    # HTC files (css3pie) 
     ExpiresByType text/x-component   "access plus 1 month" 

    # Webfonts 
     ExpiresByType application/x-font-ttf "access plus 1 month" 
     ExpiresByType font/opentype    "access plus 1 month" 
     ExpiresByType application/x-font-woff "access plus 1 month" 
     ExpiresByType image/svg+xml    "access plus 1 month" 
     ExpiresByType application/vnd.ms-fontobject "access plus 1 month" 

    # CSS and JavaScript 
     ExpiresByType text/css     "access plus 1 year" 
     ExpiresByType application/javascript "access plus 1 year" 

    </IfModule> 

    # ---------------------------------------------------------------------- 
    # ETag removal 
    # ---------------------------------------------------------------------- 

    # FileETag None is not enough for every server. 
    <IfModule mod_headers.c> 
     Header unset ETag 
    </IfModule> 

    # Since we're sending far-future expires, we don't need ETags for 
    # static content. 
    # developer.yahoo.com/performance/rules.html#etags 
    FileETag None 

    # ---------------------------------------------------------------------- 
    # Start rewrite engine 
    # ---------------------------------------------------------------------- 

    # Turning on the rewrite engine is necessary for the following rules and 
    # features. FollowSymLinks must be enabled for this to work. 

    # Some cloud hosting services require RewriteBase to be set: goo.gl/HOcPN 
    # If using the h5bp in a subdirectory, use `RewriteBase /foo` instead where 
    # 'foo' is your directory. 

    # If your web host doesn't allow the FollowSymlinks option, you may need to 
    # comment it out and use `Options +SymLinksIfOwnerMatch`, but be aware of the 
    # performance impact: goo.gl/Mluzd 

    <IfModule mod_rewrite.c> 
     Options +FollowSymlinks 
    # Options +SymLinksIfOwnerMatch 
     RewriteEngine On 
    # RewriteBase/
    </IfModule> 


    # ---------------------------------------------------------------------- 
    # Suppress or force the "www." at the beginning of URLs 
    # ---------------------------------------------------------------------- 

    # The same content should never be available under two different URLs - 
    # especially not with and without "www." at the beginning, since this can cause 
    # SEO problems (duplicate content). That's why you should choose one of the 
    # alternatives and redirect the other one. 

    # By default option 1 (no "www.") is activated. 
    # no-www.org/faq.php?q=class_b 

    # If you'd prefer to use option 2, just comment out all option 1 lines 
    # and uncomment option 2. 

    # IMPORTANT: NEVER USE BOTH RULES AT THE SAME TIME! 

    # ---------------------------------------------------------------------- 

    # Option 1: 
    # Rewrite "www.example.com -> example.com". 

    #<IfModule mod_rewrite.c> 
    # RewriteCond %{HTTPS} !=on 
    # RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
    # RewriteRule^http://%1%{REQUEST_URI} [R=301,L] 
    #</IfModule> 

    <IfModule mod_rewrite.c> 
     RewriteEngine On 

     #RewriteCond %{HTTPS} off [OR] 
     #RewriteCond %{HTTP:X-Forwarded-SSL} off [OR] 
     #RewriteCond %{HTTP_HOST} ^www\. 
     #RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ 
     #RewriteRule^https://%1%{REQUEST_URI} [NE, L, R] 

     #RewriteCond %{SERVER_PORT} ^80$ 
     #RewriteRule ^(.*)$ https://%{SERVER_NAME} %{REQUEST_URI} [R=301,L] 

     RewriteCond %{HTTPS} off [OR] 
     RewriteCond %{HTTP_HOST} ^www\. 
     RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ 
     RewriteRule^https://%1%{REQUEST_URI} [NE,L,R] 


     #RewriteCond %{HTTP_HOST} ^(^www\.) 
     #RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 
     #RewriteRule^http://%1%{REQUEST_URI} [R=301,L] 
    </IfModule> 

    #<IfModule mod_rewrite.c> 
    # RewriteEngine On 
    # RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
    # RewriteRule^https://%1%{REQUEST_URI} [R=301,L] 
    # RewriteCond %{HTTPS} !=on 
    # RewriteCond %{SERVER_PORT} 80 
    # RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L] 
    #</IfModule> 

    # ---------------------------------------------------------------------- 
    # Prevent 404 errors for non-existing redirected folders 
    # ---------------------------------------------------------------------- 

    # without -MultiViews, Apache will give a 404 for a rewrite if a folder of the 
    # same name does not exist. 
    # webmasterworld.com/apache/3808792.htm 

    Options -MultiViews 


    # ---------------------------------------------------------------------- 
    # Custom 404 page 
    # ---------------------------------------------------------------------- 

    # You can add custom pages to handle 500 or 403 pretty easily, if you like. 
    # If you are hosting your site in subdirectory, adjust this accordingly 
    # e.g. ErrorDocument 404 /subdir/404.html 
    ErrorDocument 404 /404.html 


    # ---------------------------------------------------------------------- 
    # UTF-8 encoding 
    # ---------------------------------------------------------------------- 

    # Use UTF-8 encoding for anything served text/plain or text/html 
    AddDefaultCharset utf-8 

    # Force UTF-8 for a number of file formats 
    AddCharset utf-8 .atom .css .js .json .rss .vtt .xml 


    # ---------------------------------------------------------------------- 
    # A little more security 
    # ---------------------------------------------------------------------- 

    # To avoid displaying the exact version number of Apache being used, add the 
    # following to httpd.conf (it will not work in .htaccess): 
    # ServerTokens Prod 

    # "-Indexes" will have Apache block users from browsing folders without a 
    # default document Usually you should leave this activated, because you 
    # shouldn't allow everybody to surf through every folder on your server (which 
    # includes rather private places like CMS system folders). 
    <IfModule mod_autoindex.c> 
     Options -Indexes 
    </IfModule> 

    # Block access to "hidden" directories or files whose names begin with a 
    # period. This includes directories used by version control systems such as 
    # Subversion or Git. 
    <IfModule mod_rewrite.c> 
     RewriteCond %{SCRIPT_FILENAME} -d [OR] 
     RewriteCond %{SCRIPT_FILENAME} -f 
     RewriteRule "(^|/)\." - [F] 
    </IfModule> 

    # Block access to backup and source files. These files may be left by some 
    # text/html editors and pose a great security danger, when anyone can access 
    # them. 
    <FilesMatch "(\.(bak|config|sql|fla|psd|ini|log|sh|inc|swp|dist)|~)$"> 
     Order allow,deny 
     Deny from all 
     Satisfy All 
    </FilesMatch> 

    # Increase cookie security 
    <IfModule php5_module> 
     php_value session.cookie_httponly true 
    </IfModule> 



    <IfModule mod_rewrite.c> 
     RewriteEngine On 

     #<IfModule mod_vhost_alias.c> 
     # RewriteBase/
     #</IfModule> 

     RewriteCond %{REQUEST_FILENAME} !-f 
     RewriteRule ^(.*)$ app.php [QSA,L] 


    </IfModule> 

Antwort

0

Endlich hatte ich dies mit folgenden .htaccess Regeln arbeiten, wie die Regeln in meinem Kommentar erwähnt in anderen Antworten gepostet, funktionierten nicht, weil der Elastic Load Balancer in meiner Umgebung vorhanden war. Alle HTTPS-Anforderungen, die den ELB durchlaufen, haben den Wert von X-FORWARDED-PROTO gleich "HTTPS".

RewriteEngine on 
RewriteCond %{HTTP_HOST} www.(.+) [OR,NC] 
RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC] 
RewriteRule ^/?(.*) http s://mydomain.com%{REQUEST_URI} [L,R=301] 
0

zu arbeiten versuchen Sie dies:

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

@Rahul, haben Sie das versucht? ^^ – vsharper

+0

ja ich habe es versucht, es gibt mir auch den gleichen Fehler wie oben erwähnt, ich denke, möglicherweise einige andere Regel in meiner Htaccess-Datei verursacht den Fehler, den ich es überprüfe. – Rahul

+0

Bitte bearbeiten Sie mit mehr Informationen. Code-only und "try this" Antworten werden abgeraten, da sie keine durchsuchbaren Inhalte enthalten und nicht erklären, warum jemand "das versuchen sollte". – abarisone

1

Um www zu entfernen underzwingen

RewriteCond %{HTTPS} off [OR] 
RewriteCond %{HTTP_HOST} ^www\. 
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ 
RewriteRule^https://%1%{REQUEST_URI} [NE,L,R] 

Option 2, auf Apache 2.4 Sie auch diese verwenden können:Sie folgende verwenden können

RewriteEngine on 

RewriteCond %{REQUEST_SCHEME}#%{HTTP_HOST} ^http#(?:www\.)?(.+)$ 
RewriteRule^https://%1%{REQUEST_URI} [NE,L,R] 
+1

Dies wird fehlschlagen beim Zugriff auf 'http: // sub.domain.com' – hjpotter92

+1

'% 1' wird leer sein für 'http: //' Anfragen – anubhava

+1

@Anubhava danke. Ich habe die Bedingungen festgelegt. ist das ok jetzt? – starkeen

Verwandte Themen