将WordPress MS重定向至非WWW版本,但某些目录和前缀除外

时间:2013-08-22 作者:mautematico

我有一个Wordpress多站点,比如说:

示例。com两个。实例com树。实例com

  • RewriteCond %{HTTP_HOST} ^www\\.(.+)$ [NC]
    RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 
    
    将条目MS重定向到无www版本。

    现在,我想排除一些目录(即wp admin)和页面:

    www.%。实例com/wp admin/whatever->无影响。实例com/prefixwhatever->无效。实例com/任意->%。实例com/samethever

  • /ul>我在另一个问题中看到了这段代码,但它需要一些修复才能为我工作(即不排除主页并将HTTP主机作为变量)。

    <IfModule mod_rewrite.c>
    RewriteEngine on
        #Home: Exclude the home Page
    RewriteCond %{REQUEST_URI} !^/$ [OR]
        #News: exclude anything that starts with /prefix, /prefix-2 etc
    RewriteCond %{REQUEST_URI} !^/(prefix|prefix-2|wp-admin) [NC]
    RewriteRule (.*) http://example.com/$1 [R=301,L]
    </IfModule>
    
    有什么想法吗?:D

    非常感谢。

    EDIT以下是NOT 工作它没有重定向任何内容:(

    <IfModule mod_rewrite.c>
    RewriteEngine On
    # If yes-www
    RewriteCond %{HTTP_HOST} ^www\\.example\\.com$ [NC] 
    # If the request doesn\'t start /prefix
    RewriteCond %{REQUEST_URI} !^/prefix
    RewriteCond %{REQUEST_URI} !^/prefiix-2
    RewriteCond %{REQUEST_URI} !^/wp-admin
    # Rewrite it:
    RewriteRule ^/(.*) http://example.com/$1 [L,R=301]
    </IfModule>
    
    EDIT 2此代码:

    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^www\\.(.+)$ [NC]
    RewriteCond %{REQUEST_URI} !^/host #physical file
    RewriteCond %{REQUEST_URI} !^/test #Wordpress page
    RewriteCond %{REQUEST_URI} !^/wp-admin #physical dir
    RewriteCond %{REQUEST_URI} !^/wp-login.php #physical file
    RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 
    </IfModule>
    
    似乎可以很好地处理物理文件/目录。对于Wordpress页面,会发生以下情况:

    www.example。com/测试->示例。com/索引。php www.example。com/testwhatever->示例。com/索引。php:(

    EDIT 3

    现在它似乎工作正常,只是添加了一个新条件:

    <IfModule mod_rewrite.c>
    RewriteEngine on
       #If whe\'re using www.
    RewriteCond %{HTTP_HOST} ^www\\.(.+)$ [NC]
        #prefixes to !^ ignore
    RewriteCond %{REQUEST_URI} !^/host
    RewriteCond %{REQUEST_URI} !^/aprobar
    RewriteCond %{REQUEST_URI} !^/wp-admin
    RewriteCond %{REQUEST_URI} !^/wp-login.php
        #See at the end about index.php
    RewriteCond %{REQUEST_URI} !^/index.php
    RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 
    </IfModule>
    
    当您使用permalinks时,Wordpress会执行以下操作以获取内容:

    www.example。com/pretty url->www.example。com/索引。php?漂亮的url,所以我们需要避免重定向索引。php

    新的问题是我们没有这样做:

    www.example。com/索引。php->示例。com/索引。php->示例。我想我们可以在年底制定一条新规则。我们有权重写这个案子。

    1 个回复
    SO网友:mautematico

    <IfModule mod_rewrite.c>
    RewriteEngine on
       #If whe\'re using www.
    RewriteCond %{HTTP_HOST} ^www\\.(.+)$ [NC]
        #prefixes to !^ ignore
    RewriteCond %{REQUEST_URI} !^/host
    RewriteCond %{REQUEST_URI} !^/aprobar
    RewriteCond %{REQUEST_URI} !^/wp-admin
    RewriteCond %{REQUEST_URI} !^/wp-login.php
        #See at the end about index.php
    RewriteCond %{REQUEST_URI} !^/index.php
    RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 
    </IfModule>
    
    当您使用permalinks时,Wordpress会执行以下操作以获取内容:

    www.example。com/pretty url->www.example。com/索引。php?漂亮的url,所以我们需要避免重定向索引。php

    新的问题是我们没有这样做:

    www.example。com/索引。php->示例。com/索引。php->示例。com/当然,我们可以在年底制定新规则。我们有权重写这个案子。

    结束