bow*_*rae 6 css php apache wordpress .htaccess
我正在将我的单站点 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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
我尝试向各种 HTACCESS 文件添加不同的行,但没有一个起作用。我也不确定应该插入新规则的行号。我的新规则之一可能是正确的,但位置错误。下面是我真正认为可行但没有实现的一个。
RewriteRule ^/wp-content/(.*)$ /wordpress/wp-content/$1 [R=301,NC,L]
Run Code Online (Sandbox Code Playgroud)
您不必.htaccess在子目录中设置多个文件。
唯一.htaccess需要修改的文件是位于应用程序根目录中的文件。就您而言,它似乎是您的public_html/.htaccess或您的public_html/wordpress。
现在默认情况下 WordPress 会.htaccess在该目录中生成一个文件,如下所示:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Run Code Online (Sandbox Code Playgroud)
为了重写您的 URL,您需要在 WordPress 代码块之前添加 RewriteRules 。由于 RewriteRules 是从上到下处理的,如果请求首先被index.phpWordPress 块重写,那么您的规则将永远不会被处理。
因此你的重写规则:
RewriteRule ^/wp-content/(.*)$ /wordpress/wp-content/$1 [R=301,NC,L]
Run Code Online (Sandbox Code Playgroud)
如果放在根目录的顶部就足够了.htaccess,然后删除.htaccess子目录中的文件
| 归档时间: |
|
| 查看次数: |
1138 次 |
| 最近记录: |