簡體   English   中英

如何將.htaccess重定向到www。 版? (不工作)

[英]How redirect .htaccess to www. version? (not working)

我在.htaccess有以下代碼。 它似乎不是出於某種原因而起作用。 誰能明白為什么? 它位於我網站的根目錄中。

Options +FollowSymLinks
RewriteEngine On

#Limit redirects at once (stops server crash)
 RewriteOptions MaxRedirects=10

#Redirect visitors to www. version of website
 RewriteCond %{HTTP_HOST} !^www\. [NC]
 RewriteRule ^(.*)$ http://www.MYDOMAIN.COM/$1 [R=301]

顯然, mydomain.com是我的域名。 提前感謝能夠發現任何問題的人!

更新:

這沒有問題。 但是,如果我訪問mydomain.com/link1/link2/然后它不起作用。

'/ link2 /'的.htaccess是:

#settings
 Options +FollowSymLinks
 RewriteEngine On
#homepage
 DirectoryIndex index.php

對於'/ link1 /':

#/linkgenerator/ never used, but temp redirect for neatness
 Redirect 302 /fbwiki/linkgenerator/ /fbwiki/link-generator/

#Serve error pages
  ErrorDocument 400 /link1/error.php
  ErrorDocument 401 /link1/error.php
  ErrorDocument 403 /link1/error.php?status=403
  ErrorDocument 404 /link1/error.php?status=404
  ErrorDocument 500 /link1/error.php?status=500

這個配置適合我

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

它不適用於子目錄,因為這些子目錄有自己的重寫規則,默認情況下,這些規則不會被父級的低級別.htaccess繼承。

要解決這個問題,您有兩種選擇:

  1. 在您的較低級別.htaccess中添加類似的www強制規則以及OR
  2. 在較低級別.htaccess文件的頂部添加此行:

     RewriteEngine On RewriteOptions Inherit # remaining rules will be below this 

更新:保持您的www規則如下:

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,NE,R=301]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM