programing

Wordpress Multisite에서 HTACCCESS를 사용하여 WP-CONTER URL에 하위 디렉토리 추가

muds 2023. 11. 7. 21:10
반응형

Wordpress Multisite에서 HTACCCESS를 사용하여 WP-CONTER URL에 하위 디렉토리 추가

단일 사이트 WordPress 설치를 다중 사이트로 전환하는 과정에 있습니다.메인 사이트에서 깨져버린 CSS/JS를 수정하려고 합니다.

현재 네트워크에 두 개의 사이트가 있습니다.

제 멀티사이트 설치는 워드프레스라고 부르는 서브디렉토리 안에 있습니다.그래서 파일 경로는 다음과 같습니다.public_html/wordpress.

내 목표는 두 사이트 모두 URL에 "워드프레스" 하위 디렉토리를 갖지 않는 것입니다. 주 사이트에서 부서진 CSS와 JS를 제외하고는 모두 작동하는 것 같습니다(보조 사이트는 괜찮아 보임).

코드를 검사할 때 모든 CSS 및 JS 호출은 http://www.example.com/wp-content/ 을 가리키지만 파일은 거기서 찾을 수 없습니다.브라우저에서 http://www.example.com/wordpress/wp-content 로 이동하면 파일을 찾을 수 있습니다.워드프레스 폴더를 숨기고 파일을 가져올 수 있기를 원합니다.

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 이 파일은 존재하지 않았지만 제가 만들었습니다.워드프레스 서브디렉토리 없이 파일이 호출되지만 서브디렉토리가 포함된 것처럼 행동해야 한다는 생각이 들었습니다.예를 들어, 현재 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]

첫째, 당신은 모든 것을 제거해야 합니다..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]

도움이 되길 바랍니다.

여러 개를 설치할 필요는 없습니다..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는 위에서 아래로 처리되기 때문에, 요청이 먼저 다음으로 다시 작성되는 경우index.phpWordPress 블록에 의해 규칙이 처리되지 않습니다.

따라서 다시 쓰기 규칙:

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

루트 디렉터리의 맨 위에 있으면 충분합니다..htaccess, 제거합니다..htaccess하위 디렉토리에 파일을 저장합니다.

대부분의 다중 사이트 네트워크는 사이트의 루트 디렉터리에 설치됩니다.이것은 서버가 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 같은 주소에 있어야 하기 때문입니다. 이 주소는 작동하지 않습니다.

언급URL : https://stackoverflow.com/questions/74297627/add-subdirectory-to-wp-content-url-using-htaccess-in-wordpress-multisite

반응형