Rumah > Soal Jawab > teks badan
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:
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粉9304480302024-01-03 12:56:22
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>
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.