我正在將我的單站點 WordPress 安裝轉(zhuǎn)換為多站點。我正在嘗試修復(fù)主站點上損壞的 CSS/JS。
我的網(wǎng)絡(luò)上目前有兩個網(wǎng)站:
我的多站點安裝位于我們稱為“wordpress”的子目錄內(nèi)。所以文件路徑看起來像 public_html/wordpress
。
我的目標(biāo)是兩個網(wǎng)站的 URL 中都不包含“wordpress”子目錄。除了主站點上的 CSS 和 JS 損壞(輔助站點看起來很好)之外,一切似乎都正常。
檢查代碼時,所有 CSS 和 JS 調(diào)用都指向 http://www.example.com/wp-content/,但在那里找不到文件。如果我在瀏覽器中訪問 http://www.example.com/wordpress/wp-content ,就會找到這些文件。我想隱藏 wordpress 文件夾,但仍然能夠檢索文件。
我對如何設(shè)置 HTACCESS 文件感到困惑。我已經(jīng)對其進(jìn)行了一些初步更改,以便使子目錄中的多站點正常工作。這些都是我在 StackOverflow 和其他在線網(wǎng)站上找到的關(guān)于如何將站點移動到帶有子目錄的多站點并隱藏子目錄的指南。我還沒有找到任何有關(guān)解決 CSS/JS 損壞問題的信息。
我認(rèn)為我需要更新 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 該文件不存在,但我創(chuàng)建了它。我的想法是,在沒有 wordpress 子目錄的情況下調(diào)用文件,但它們需要表現(xiàn)得像包含子目錄一樣。例如,目前 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 文件添加不同的行,但沒有一個起作用。我也不確定應(yīng)該插入新規(guī)則的行號。我的新規(guī)則之一可能是正確的,但位置錯誤。下面是我真正認(rèn)為可行但沒有實現(xiàn)的一個。
RewriteRule ^/wp-content/(.*)$ /wordpress/wp-content/ [R=301,NC,L]
首先,您應(yīng)該刪除所有 .htaccess
文件,只保留根目錄中的一個:public_html/.htaccess
其次,您的最后一條規(guī)則不起作用,因為稍微錯誤。
您應(yīng)該將其更改為:
RewriteRule ^/wp-content/(.*)$ /wordpress/wp-content/ [R=301,NC,L]
致:
RewriteRule ^wp-content/(.*)$ wordpress/wp-content/ [L,NC]
因為你不需要起始/
,也不需要301重定向。您希望隱藏 wordpress
文件夾,并將請求的網(wǎng)址從 wp-content/(.*)
映射到 wordpress/wp-content/$1
代碼>
此外,此規(guī)則必須是 .htaccess 文件中的第一個規(guī)則,其優(yōu)先級高于以下默認(rèn) WordPress 規(guī)則。來自 public_html/
的最終且唯一 .htaccess
應(yīng)如下所示:
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]
希望對你有幫助。