我如何编写重写规则才能显示为移动多站点?

时间:2014-05-30 作者:Stephen

正如我们在我的问题中得出的结论trying to change the url of a multisite 最简单的解决方案可能是添加重写规则,因为这实际上只是我在这里关心的最终结果。

我试图以一种相当简单的方式添加重写规则,但似乎不起作用,所以我回来寻求您的帮助。我认为这在这里很重要,因为重写规则本身并不复杂,但它与WordPress的交互方式让我望而生畏。

当前目录结构如下所示

r.info
/
+- blogs +- th
         |   - .htaccess
         |  + - wp-admin, wp-content, wp-includes
         +- st
最初的想法是,新的多站点将进入st giving/r.info/blogs/st,但结果是url将/r.info/blogs/th视为基础,从而导致/r.info/blogs/th/st

目前没有。htaccess文件位于任何目录中,除非如上所述。我认为,由于许多明显的原因,这种情况不会一直保持下去。

-bash-3.2$ cat .htaccess
#RewriteEngine On    # Turn on the rewriting engine
#RewriteRule    /blogs/st/(.*)$    /blogs/th/st/$1    [NC]

# BEGIN wtwp_cache
<IfModule mod_mime.c>

        # Text
        AddType text/css .css
        AddType application/x-javascript .js
        AddType text/html .html .htm
        AddType text/richtext .rtf .rtx
        AddType text/plain .txt
        AddType text/xml .xml

        # Image
        AddType image/gif .gif
        AddType image/x-icon .ico
        AddType image/jpeg .jpg .jpeg .jpe
        AddType image/png .png
        AddType image/svg+xml .svg .svgz

        # Video
        AddType video/asf .asf .asx .wax .wmv .wmx
        AddType video/avi .avi
        AddType video/quicktime .mov .qt
        AddType video/mp4 .mp4 .m4v
        AddType video/mpeg .mpeg .mpg .mpe

        # PDF
        AddType application/pdf .pdf

        # Flash
        AddType application/x-shockwave-flash .swf

        # Font
        AddType application/x-font-ttf .ttf .ttc
        AddType application/vnd.ms-fontobject .eot
        AddType application/x-font-otf .otf

        # Audio
        AddType audio/mpeg .mp3 .m4a
        AddType audio/ogg .ogg
        AddType audio/wav .wav
        AddType audio/wma .wma

        # Zip/Tar
        AddType application/x-tar .tar
        AddType application/x-gzip .gz .gzip
        AddType application/zip .zip
</IfModule>

<IfModule mod_expires.c>
        ExpiresActive On

        # Text
        ExpiresByType text/css A31536000
        ExpiresByType application/x-javascript A31536000
        ExpiresByType text/html A3600
        ExpiresByType text/richtext A3600
        ExpiresByType text/plain A3600
        ExpiresByType text/xml A3600

        # Image
        ExpiresByType image/gif A31536000
        ExpiresByType image/x-icon A31536000
        ExpiresByType image/jpeg A31536000
        ExpiresByType image/png A31536000
        ExpiresByType image/svg+xml A31536000

        # Video
        ExpiresByType video/asf A31536000
        ExpiresByType video/avi A31536000
        ExpiresByType video/quicktime A31536000
        ExpiresByType video/mp4 A31536000
        ExpiresByType video/mpeg A31536000

        # PDF
        ExpiresByType application/pdf A31536000

        # Flash
        ExpiresByType application/x-shockwave-flash A31536000

        # Font
        ExpiresByType application/x-font-ttf A31536000
        ExpiresByType application/vnd.ms-fontobject A31536000
        ExpiresByType application/x-font-otf A31536000

        # Audio
        ExpiresByType audio/mpeg A31536000
        ExpiresByType audio/ogg A31536000
        ExpiresByType audio/wav A31536000
        ExpiresByType audio/wma A31536000

        # Zip/Tar
        ExpiresByType application/x-tar A31536000
        ExpiresByType application/x-gzip A31536000
        ExpiresByType application/zip A31536000
</IfModule>
<FilesMatch "\\.(?i:css|js|htm|html|rtf|rtx|txt|xml|gif|ico|jpg|jpeg|jpe|png|svg|svgz|asf|asx|wax|wmv|wmx|avi|mov|qt|mp4|m4v|mpeg|mpg|mpe|pdf|swf|ttf|ttc|eot|otf|mp3|m4a|ogg|wav|wma|tar|gz|gzip|zip)$">
        <IfModule mod_headers.c>
                Header set Pragma "public"
                Header append Cache-Control "public, must-revalidate, proxy-revalidate"
                Header unset ETag
        </IfModule>
</FilesMatch>
<FilesMatch "\\.(?i:css|js|gif|ico|jpg|jpeg|jpe|png|pdf|swf|ttf|ttc|eot|otf)$">
    <IfModule mod_headers.c>
                Header unset Set-Cookie
        </IfModule>
</FilesMatch>
# END wtwp_cache

# BEGIN wtwp_security
<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteBase /blogs/th/st/
        RewriteRule ^wp-admin/includes/ - [F,L]
        RewriteRule !^wp-includes/ - [S=3]
        RewriteRule ^wp-includes/[^/]+\\.php$ - [F,L]
        RewriteRule ^wp-includes/js/tinymce/langs/.+\\.php - [F,L]
        RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>
<Files "wp-config.php">
        Order allow,deny
        Deny from all
</Files>
Options -Indexes
# END wtwp_security

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blogs/th/
RewriteRule ^index\\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\\.php)$ $2 [L]
RewriteRule . index.php [L]
</IfModule>

# END WordPress
我尝试了您看到的被注释掉的RewriteRule的几种变体,我留下了这些变体,以防位置出现问题,例如:

RewriteRule    ^r.info/blogs/st/$    r.info/blogs/th/st/  
等等。

重写中对url的请求返回404错误,但直接访问不需要的url效果很好。

1 个回复
SO网友:jdm2112

WordPress将创建一个。如果您使用的是Permalinks,则会自动访问htaccess文件。不会有。如果Permalinks设置为默认值,则为htaccess文件,除非其他组件已创建它。WordPress将只查看的一个实例。htaccess(除非您专门设置了单独的子文件夹安装),并忽略子文件夹中的任何版本。

尝试使用RewriteCond 检查,然后重写这些到根或一层,以您的目标为准。

像这样的东西应该能产生你想要的东西:

RewriteEngine on
#
# stuff to let through (ignore)
RewriteCond %{REQUEST_URI} "/folder1/" [OR]
RewriteCond %{REQUEST_URI} "/folder2/"
RewriteRule (.*) $1 [L]
有关此方法的更多详细信息herefrom Apache directly

结束

相关推荐

404 on page 2 multisite

我有一个多站点安装的wordpress。在我的起始页(index.php)上,我显示了来自该网络所有站点的帖子。我遇到的问题是,当我转到/Page/2时,如果我的主博客没有足够的帖子放在第2页上,我会收到404条消息。然而,在整个网络上,有足够的帖子可以容纳2页。如果我在我的主博客中添加更多帖子,第2页将再次可用。我猜wordpress会在查询包含索引之前检查是否存在任何帖子。php。我试图找到在哪里可以做到这一点,但没有找到任何东西。有人知道wordpress在索引之前是否做过这种检查吗。是否包含php