我正在將我的單站點 WordPress 安裝轉換為多站點。我正在嘗試從我的主站點修復損壞的 CSS/JS。
我目前在我的網路上有兩個站點:
- http://www.example.com(主要)
- http://dev.example.com(二級)
我的多站點安裝位于我們稱為“ 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]
uj5u.com熱心網友回復:
首先,您應該洗掉所有.htaccess檔案并只保留根目錄中的一個檔案:public_html/.htaccess
其次,您的最后一條規則不起作用,因為它有點錯誤。
你應該改變它:
RewriteRule ^/wp-content/(.*)$ /wordpress/wp-content/$1 [R=301,NC,L]
至:
RewriteRule ^wp-content/(.*)$ wordpress/wp-content/$1 [L,NC]
因為你不需要啟動/,也不需要 301 重定向。您希望wordpress隱藏您的檔案夾,只將請求的 URL 從 映射wp-content/(.*)到wordpress/wp-content/$1
此外,此規則必須是 .htaccess 檔案中的第一個規則,才能優先于遵循默認的 Wordpress 規則。你的最終也是唯一 .htaccess的來源public_html/應該是這樣的:
RewriteEngine On
RewriteBase /
RewriteRule ^wp-content/(.*)$ wordpress/wp-content/$1 [L,nc]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
我希望它能幫助你。
uj5u.com熱心網友回復:
您不必.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
為了重寫您的 URL,您需要在 WordPress 代碼塊之前添加您的 RewriteRules 。由于 RewriteRules 是從上到下處理的,如果請求首先index.php被 WordPress 塊重寫,那么您的規則將永遠不會被處理。
因此,您的 RewriteRule:
RewriteRule ^/wp-content/(.*)$ /wordpress/wp-content/$1 [R=301,NC,L]
放在根目錄的最上面就可以了,把子目錄下的檔案.htaccess去掉.htaccess
uj5u.com熱心網友回復:
大多數多站點網路都安裝在站點的根目錄中。這意味著如果您的服務器正在使用 example.com,那么這將是您在網路上的基本站點的 URL。
如果您在子目錄中安裝了 WordPress Multisite,那么您將無法使用子域。
如果您已經在 example.com 上安裝了單個站點,并且在運行 Multisite 的子目錄中添加了另一個 WordPress 安裝,那么它的地址將為 example.com/wordpress。
您在新網路上創建的任何站點都將位于 example.com/wordpress/my-new-site。在這里創建子目錄是不可能的,因為它必須位于 example.com/wordpress/my-new-site.network 這樣的地址,這是行不通的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/534345.html
標籤:PHPCSSWordPress的阿帕奇.htaccess
