Tambahkan subdirektori ke URL WP-CONTENT menggunakan HTACCESS dalam WordPress multisite
P粉917406009
P粉917406009 2024-01-02 13:50:59
0
1
862

Saya menukar pemasangan WordPress tapak tunggal saya kepada berbilang tapak. Saya cuba membetulkan CSS/JS yang rosak di tapak utama saya.

Saya kini mempunyai dua tapak web di rangkaian saya:

  • http://www.example.com (utama)
  • http://dev.example.com (kecil)

Pemasangan berbilang tapak saya terletak di dalam subdirektori yang kami panggil "wordpress". Jadi laluan fail kelihatan seperti public_html/wordpress.

Matlamat saya ialah kedua-dua URL tapak web tidak mengandungi subdirektori "wordpress". Semuanya nampaknya berfungsi dengan baik kecuali CSS dan JS yang rosak di tapak utama (tapak kedua kelihatan baik).

Apabila memeriksa kod, semua panggilan CSS dan JS menghala ke http://www.example.com/wp-content/, tetapi fail tidak ditemui di sana. Jika saya pergi ke http://www.example.com/wordpress/wp-content dalam penyemak imbas saya, saya akan menemui fail ini. Saya mahu menyembunyikan folder wordpress tetapi masih boleh mendapatkan semula fail.

Saya keliru bagaimana untuk menyediakan fail HTACCESS. Saya telah membuat beberapa perubahan awal padanya untuk menjadikan berbilang tapak dalam subdirektori berfungsi dengan baik. Ini adalah panduan yang saya temui di StackOverflow dan tapak lain dalam talian tentang cara mengalihkan tapak ke multisite dengan subdirektori dan menyembunyikan subdirektori. Saya tidak menemui sebarang maklumat tentang membetulkan isu rosak CSS/JS.

Saya rasa saya perlu mengemas kini satu atau lebih daripada 3 fail 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 Fail itu tidak wujud tetapi saya menciptanya. Idea saya adalah untuk memanggil fail tanpa subdirektori wordpress, tetapi mereka perlu berkelakuan seolah-olah ia mengandungi subdirektori. Contohnya, pada masa ini http://www.example.com/wp-content/uploads/image.jpg rosak, tetapi http://www.example.com/wordpress/wp-content/uploads/image.jpg berfungsi. Saya mahu ia menjadi sebaliknya, atau saya mahu kedua-dua laluan berfungsi.

<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>

Saya cuba menambah baris yang berbeza pada pelbagai fail HTACCESS tetapi tiada satu pun yang berfungsi. Saya juga tidak pasti tentang nombor baris di mana peraturan baharu harus disisipkan. Salah satu peraturan baharu saya mungkin betul, tetapi di tempat yang salah. Berikut adalah satu yang saya fikir akan berkesan tetapi tidak.

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


P粉917406009
P粉917406009

membalas semua(1)
P粉930448030

Mula-mula anda hendaklah memadam semua .htaccess 文件,只保留根目录中的一个:public_html/.htaccess

Kedua, peraturan terakhir anda tidak berfungsi kerana ia sedikit salah.

Anda harus menukarnya kepada:

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

Kepada:

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

Kerana anda tidak memerlukan /,也不需要301重定向。您希望隐藏 wordpress 文件夹,并将请求的网址从 wp-content/(.*) 映射到 wordpress/wp-content/kod>

permulaan

Selain itu, peraturan ini mestilah peraturan pertama dalam fail .htaccess, mengambil keutamaan daripada peraturan WordPress lalai berikut. Daripada public_html/ 的最终且唯一 .htaccess ia sepatutnya kelihatan seperti ini:

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]

Semoga ia membantu anda.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!