2017-08-26 39 views
1

我想重定向第三或第四級域補充:的.htaccess WWW - 重定向(R301)與動態域名

DirectoryIndex index.php 

RewriteEngine on 
RewriteRule ^$ /home/ [R=301,L] 


RewriteRule ^(?!www[\.]) http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?p=/$1 [QSA] 

我的問題是,它可能是一個不同數量級的「WWW」。 .. www。 froschkoenig84。被放置。網絡 www。 froschkoenig84。 de

因此,當它不是以「www」開頭的時候。然後添加,否則不...

重寫規則^(?WWW [\。]){http://www.% HTTP_HOST}%{REQUEST_URI} [R = 301,L]

但它不」 t工作,...它每次都加...所以它的結局就像... add "www." each time

我該如何檢查它是否以「www。」開頭。或不? 如果可能的話,沒有單獨的條件。 :)

我創建了類似的重寫規則的.NET(web.config文件),太:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
<system.webServer> 
    <rewrite> 
    <rules> 
    <rule name="RedirectToHome" stopProcessing="true"> 
    <match url="^$" /> 
    <conditions trackAllCaptures="true"> 
     <add input="{CACHE_URL}" pattern="^(https?)://" /> 
    </conditions> 
    <action type="Redirect" redirectType="Permanent" url="{ToLower:{C:1}://{HTTP_HOST}/home/}" /> 
    </rule> 
    <rule name="RedirectToWWW" stopProcessing="true"> 
    <match url="(.*)" ignoreCase="false" /> 
    <conditions> 
     <add input="{CACHE_URL}" pattern="^(https?://)(?!www[\.])" /> 
    </conditions> 
    <action type="Redirect" url="{ToLower:{C:1}www[\.]{R:1}}" redirectType="Permanent" /> 
    </rule> 
    <rule name="RewriteToParams" stopProcessing="true"> 
    <match url="^(.*)$" ignoreCase="false" /> 
    <conditions> 
     <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" /> 
     <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" /> 
     <add input="{URL}" pattern="^/favicon.ico$" ignoreCase="false" negate="true" /> 
    </conditions> 
    <action type="Rewrite" url="{ToLower:index.php?p=/{R:1}}" appendQueryString="true" /> 
    </rule> 
    </rules> 
    </rewrite> 
</system.webServer> 
</configuration> 

:/

回答

1

域名是不是在重寫規則測試URI的一部分。

您可以使用:

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

謝謝,這工作完全正常。 :) – Froschkoenig84

0

worink解決方案:

DirectoryIndex index.php 

RewriteEngine on 
#RedirectToHome 
    RewriteRule ^$ /home/ [R=301,L] 

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

#RewriteToParams 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php?p=/$1 [QSA]