【发布时间】:2022-11-11 02:50:14
【问题描述】:
我正在将我的单站点 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/$1
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$ $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>
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/$1
</IfModule>
我尝试向各种 HTACCESS 文件添加不同的行,但它们都不起作用。我也不确定应该插入新规则的行号。我的一条新规则可能是正确的,但它在错误的地方。下面是一个我真的认为会起作用但没有起作用的方法。
RewriteRule ^/wp-content/(.*)$ /wordpress/wp-content/$1 [R=301,NC,L]
【问题讨论】:
-
我猜第二个是在您启用多站点后生成的。如果是真的,那么正确的位置是在第一个“htaccess”文件中。您肯定不需要第三个文件
-
是的,这是真的。第二个来自我在网上找到的关于启用多站点功能的指南。我删除了第三个 htaccess 文件并将代码放在第一个 htaccess 中(public_html 根目录下的那个),但没有任何改变。
标签: php css wordpress apache .htaccess