首页  >  问答  >  正文

在WordPress多站点中使用HTACCESS将子目录添加到WP-CONTENT URL

我正在将我的单站点 WordPress 安装转换为多站点。我正在尝试修复主站点上损坏的 CSS/JS。

我的网络上目前有两个网站:

我的多站点安装位于我们称为“wordpress”的子目录内。所以文件路径看起来像 public_html/wordpress

我的目标是两个网站的 URL 中都不包含“wordpress”子目录。除了主站点上的 CSS 和 JS 损坏(辅助站点看起来很好)之外,一切似乎都正常。

检查代码时,所有 CSS 和 JS 调用都指向 http://www.example.com/wp-content/,但在那里找不到文件。如果我在浏览器中访问 http://www.example.com/wordpress/wp-content ,就会找到这些文件。我想隐藏 wordpress 文件夹,但仍然能够检索文件。

我对如何设置 HTACCESS 文件感到困惑。我已经对其进行了一些初步更改,以便使子目录中的多站点正常工作。这些都是我在 StackOverflow 和其他在线网站上找到的关于如何将站点移动到带有子目录的多站点并隐藏子目录的指南。我还没有找到任何有关解决 CSS/JS 损坏问题的信息。

我认为我需要更新 3 个 HTACCESS 文件中的一个或多个。

1.) public_html/.htaccess

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/wordpress/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /wordpress/
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(/)?$ /wordpress/index.php [L] 
</IfModule>

2.) public_html/wordpress/.htaccess

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /wordpress/
RewriteRule ^index.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*)  [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*.php)$  [L]
RewriteRule . index.php [L]
</IfModule>

3.) public_html/wordpress/wp-content/.htaccess 该文件不存在,但我创建了它。我的想法是,在没有 wordpress 子目录的情况下调用文件,但它们需要表现得像包含子目录一样。例如,目前 http://www.example.com/wp-content/uploads/image.jpg 已损坏,但 http://www.example.com/wordpress/wp-content/uploads/image.jpg 可以工作。我希望它是相反的,或者我希望两条路径都有效。

<IfModule mod_rewrite.c>
RewriteEngine on
# ADD WORDPRESS IF URL DOES NOT HAVE IT
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/wordpress/
RewriteRule ^(.*)$ /wordpress/
</IfModule>

我尝试向各种 HTACCESS 文件添加不同的行,但没有一个起作用。我也不确定应该插入新规则的行号。我的新规则之一可能是正确的,但位置错误。下面是我真正认为可行但没有实现的一个。

RewriteRule ^/wp-content/(.*)$ /wordpress/wp-content/ [R=301,NC,L]


P粉917406009P粉917406009314 天前865

全部回复(1)我来回复

  • P粉930448030

    P粉9304480302024-01-03 12:56:22

    首先,您应该删除所有 .htaccess 文件,只保留根目录中的一个:public_html/.htaccess

    其次,您的最后一条规则不起作用,因为稍微错误。

    您应该将其更改为:

    RewriteRule ^/wp-content/(.*)$ /wordpress/wp-content/ [R=301,NC,L]

    致:

    RewriteRule ^wp-content/(.*)$ wordpress/wp-content/ [L,NC]

    因为你不需要起始/,也不需要301重定向。您希望隐藏 wordpress 文件夹,并将请求的网址从 wp-content/(.*) 映射到 wordpress/wp-content/$1代码>

    此外,此规则必须是 .htaccess 文件中的第一个规则,其优先级高于以下默认 WordPress 规则。来自 public_html/ 的最终且唯一 .htaccess 应如下所示:

    RewriteEngine On
    RewriteBase /
    RewriteRule ^wp-content/(.*)$ wordpress/wp-content/ [L,nc]
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

    希望对你有帮助。

    回复
    0
  • 取消回复