source

WPML › 하위 카테고리 페이지는 404개의 ‹ WordPress를 생성합니다.

ittop 2023. 10. 19. 22:45
반응형

WPML › 하위 카테고리 페이지는 404개의 ‹ WordPress를 생성합니다.

문제에 대한 간략한 설명

그래서 기본적으로 문제는 wpml로 번역된 사이트에서 하위 카테고리를 사용하면 404페이지가 생성된다는 것입니다.부모 카테고리에서는 여전히 게시물을 볼 수 있고 문제없이 이동할 수 있습니다.그리고 물론 번역되지 않은 버전에서는 모든 것이 잘 작동합니다.

나의질문

그래서 제 질문은 만약 다른 사람이 이런 문제를 가지고 있다면, 어떻게 해결했나요?


도움이 되는 정보가 있기를 바랍니다.

소프트웨어

  • PHP - 5.2
  • 워드프레스 - 3.3.2
  • WPML 다국어 CMS - 2.4.3
  • WPML 문자열 변환 - 1.3.0

Permalink 설정

/%category%/%postname%/

내가 시도한 것

  • 다른 모든 플러그인을 비활성화하려고 했습니다.
  • permallinks ‹ 편집 플러시를 시도

부가정보

  • 하위 범주에 대한 URL이 "페이지" ‹ 편집으로 인식되는 것 같습니다.
  • 대신 수동으로 url로 직접 이동하지만 url에서 상위 범주를 빼면 예상 범주 보관 페이지 ‹ 편집으로 이동합니다.
    :http://domain.com/en/super/sub/->http://domain.com/en/sub/
내 .htaccess -file:
# BEGIN Redirects
RedirectMatch 301 ^/okategoriserade/(.*)$ /webb/$1
RedirectMatch 301 ^/apache2/(.*)$ /apache/$1
RedirectMatch 301 ^/server/(.*)$ /linux/$1
RedirectMatch 301 ^/etiketter/(.*)$ /tag/$1
RedirectMatch 301 ^/kategorier/(.*)$ /$1
RedirectMatch 301 ^/en/php-en/zf2/(.*)$ /en/zf2/$1
RedirectMatch 301 ^/media/me-avatar-e1332014347355.png(.*)$ /media/erik-landvall.png$1
RedirectMatch 301 ^/jquery/(.*)$ /javascript/jquery/$1
# END Redirects

# BEGIN W3TC Browser Cache
<IfModule mod_mime.c>
    AddType text/css .css
    AddType application/x-javascript .js
    AddType text/x-component .htc
    AddType text/html .html .htm
    AddType text/richtext .rtf .rtx
    AddType image/svg+xml .svg .svgz
    AddType text/plain .txt
    AddType text/xsd .xsd
    AddType text/xsl .xsl
    AddType text/xml .xml
    AddType video/asf .asf .asx .wax .wmv .wmx
    AddType video/avi .avi
    AddType image/bmp .bmp
    AddType application/java .class
    AddType video/divx .divx
    AddType application/msword .doc .docx
    AddType application/vnd.ms-fontobject .eot
    AddType application/x-msdownload .exe
    AddType image/gif .gif
    AddType application/x-gzip .gz .gzip
    AddType image/x-icon .ico
    AddType image/jpeg .jpg .jpeg .jpe
    AddType application/vnd.ms-access .mdb
    AddType audio/midi .mid .midi
    AddType video/quicktime .mov .qt
    AddType audio/mpeg .mp3 .m4a
    AddType video/mp4 .mp4 .m4v
    AddType video/mpeg .mpeg .mpg .mpe
    AddType application/vnd.ms-project .mpp
    AddType application/x-font-otf .otf
    AddType application/vnd.oasis.opendocument.database .odb
    AddType application/vnd.oasis.opendocument.chart .odc
    AddType application/vnd.oasis.opendocument.formula .odf
    AddType application/vnd.oasis.opendocument.graphics .odg
    AddType application/vnd.oasis.opendocument.presentation .odp
    AddType application/vnd.oasis.opendocument.spreadsheet .ods
    AddType application/vnd.oasis.opendocument.text .odt
    AddType audio/ogg .ogg
    AddType application/pdf .pdf
    AddType image/png .png
    AddType application/vnd.ms-powerpoint .pot .pps .ppt .pptx
    AddType audio/x-realaudio .ra .ram
    AddType application/x-shockwave-flash .swf
    AddType application/x-tar .tar
    AddType image/tiff .tif .tiff
    AddType application/x-font-ttf .ttf .ttc
    AddType audio/wav .wav
    AddType audio/wma .wma
    AddType application/vnd.ms-write .wri
    AddType application/vnd.ms-excel .xla .xls .xlsx .xlt .xlw
    AddType application/zip .zip
</IfModule>
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType text/css A31536000
    ExpiresByType application/x-javascript A31536000
    ExpiresByType text/x-component A31536000
    ExpiresByType text/html A3600
    ExpiresByType text/richtext A3600
    ExpiresByType image/svg+xml A3600
    ExpiresByType text/plain A3600
    ExpiresByType text/xsd A3600
    ExpiresByType text/xsl A3600
    ExpiresByType text/xml A3600
    ExpiresByType video/asf A31536000
    ExpiresByType video/avi A31536000
    ExpiresByType image/bmp A31536000
    ExpiresByType application/java A31536000
    ExpiresByType video/divx A31536000
    ExpiresByType application/msword A31536000
    ExpiresByType application/vnd.ms-fontobject A31536000
    ExpiresByType application/x-msdownload A31536000
    ExpiresByType image/gif A31536000
    ExpiresByType application/x-gzip A31536000
    ExpiresByType image/x-icon A31536000
    ExpiresByType image/jpeg A31536000
    ExpiresByType application/vnd.ms-access A31536000
    ExpiresByType audio/midi A31536000
    ExpiresByType video/quicktime A31536000
    ExpiresByType audio/mpeg A31536000
    ExpiresByType video/mp4 A31536000
    ExpiresByType video/mpeg A31536000
    ExpiresByType application/vnd.ms-project A31536000
    ExpiresByType application/x-font-otf A31536000
    ExpiresByType application/vnd.oasis.opendocument.database A31536000
    ExpiresByType application/vnd.oasis.opendocument.chart A31536000
    ExpiresByType application/vnd.oasis.opendocument.formula A31536000
    ExpiresByType application/vnd.oasis.opendocument.graphics A31536000
    ExpiresByType application/vnd.oasis.opendocument.presentation A31536000
    ExpiresByType application/vnd.oasis.opendocument.spreadsheet A31536000
    ExpiresByType application/vnd.oasis.opendocument.text A31536000
    ExpiresByType audio/ogg A31536000
    ExpiresByType application/pdf A31536000
    ExpiresByType image/png A31536000
    ExpiresByType application/vnd.ms-powerpoint A31536000
    ExpiresByType audio/x-realaudio A31536000
    ExpiresByType image/svg+xml A31536000
    ExpiresByType application/x-shockwave-flash A31536000
    ExpiresByType application/x-tar A31536000
    ExpiresByType image/tiff A31536000
    ExpiresByType application/x-font-ttf A31536000
    ExpiresByType audio/wav A31536000
    ExpiresByType audio/wma A31536000
    ExpiresByType application/vnd.ms-write A31536000
    ExpiresByType application/vnd.ms-excel A31536000
    ExpiresByType application/zip A31536000
</IfModule>
<IfModule mod_deflate.c>
    <IfModule mod_setenvif.c>
        BrowserMatch ^Mozilla/4 gzip-only-text/html
        BrowserMatch ^Mozilla/4\.0[678] no-gzip
        BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
        BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
    </IfModule>
    <IfModule mod_headers.c>
        Header append Vary User-Agent env=!dont-vary
    </IfModule>
    <IfModule mod_filter.c>
        AddOutputFilterByType DEFLATE text/css application/x-javascript text/x-component text/html text/richtext image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon
    </IfModule>
</IfModule>
<FilesMatch "\.(css|js|htc|CSS|JS|HTC)$">
    <IfModule mod_headers.c>
        Header set Pragma "public"
        Header append Cache-Control "public, must-revalidate, proxy-revalidate"
    </IfModule>
    FileETag MTime Size
    <IfModule mod_headers.c>
         Header set X-Powered-By "W3 Total Cache/0.9.2.4"
    </IfModule>
</FilesMatch>
<FilesMatch "\.(html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml|HTML|HTM|RTF|RTX|SVG|SVGZ|TXT|XSD|XSL|XML)$">
    <IfModule mod_headers.c>
        Header set Pragma "public"
        Header append Cache-Control "public, must-revalidate, proxy-revalidate"
    </IfModule>
    FileETag MTime Size
    <IfModule mod_headers.c>
         Header set X-Powered-By "W3 Total Cache/0.9.2.4"
    </IfModule>
</FilesMatch>
<FilesMatch "\.(asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|eot|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|otf|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|svg|svgz|swf|tar|tif|tiff|ttf|ttc|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip|ASF|ASX|WAX|WMV|WMX|AVI|BMP|CLASS|DIVX|DOC|DOCX|EOT|EXE|GIF|GZ|GZIP|ICO|JPG|JPEG|JPE|MDB|MID|MIDI|MOV|QT|MP3|M4A|MP4|M4V|MPEG|MPG|MPE|MPP|OTF|ODB|ODC|ODF|ODG|ODP|ODS|ODT|OGG|PDF|PNG|POT|PPS|PPT|PPTX|RA|RAM|SVG|SVGZ|SWF|TAR|TIF|TIFF|TTF|TTC|WAV|WMA|WRI|XLA|XLS|XLSX|XLT|XLW|ZIP)$">
    <IfModule mod_headers.c>
        Header set Pragma "public"
        Header append Cache-Control "public, must-revalidate, proxy-revalidate"
    </IfModule>
    FileETag MTime Size
    <IfModule mod_headers.c>
         Header set X-Powered-By "W3 Total Cache/0.9.2.4"
    </IfModule>
</FilesMatch>
# END W3TC Browser Cache
# BEGIN W3TC Page Cache core
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^(.*\/)?w3tc_rewrite_test$ $1?w3tc_rewrite_test=1 [L]
    RewriteCond %{HTTP:Accept-Encoding} gzip
    RewriteRule .* - [E=W3TC_ENC:_gzip]
    RewriteCond %{REQUEST_METHOD} !=POST
    RewriteCond %{QUERY_STRING} =""
    RewriteCond %{HTTP_HOST} =erik.landvall.se
    RewriteCond %{REQUEST_URI} \/$ [OR]
    RewriteCond %{REQUEST_URI} (sitemap(_index)?\.xml(\.gz)?|[a-z0-9_\-]+-sitemap([0-9]+)?\.xml(\.gz)?) [NC]
    RewriteCond %{REQUEST_URI} !(\/wp-admin\/|\/xmlrpc.php|\/wp-(app|cron|login|register|mail)\.php|\/feed\/|wp-.*\.php|index\.php) [NC,OR]
    RewriteCond %{REQUEST_URI} (wp-comments-popup\.php|wp-links-opml\.php|wp-locations\.php) [NC]
    RewriteCond %{HTTP_COOKIE} !(comment_author|wp-postpass) [NC]
    RewriteCond %{HTTP_USER_AGENT} !(W3\ Total\ Cache/0\.9\.2\.4) [NC]
    RewriteCond "%{DOCUMENT_ROOT}/wp-content/w3tc/pgcache/%{REQUEST_URI}/_index%{ENV:W3TC_UA}%{ENV:W3TC_REF}%{ENV:W3TC_SSL}.html%{ENV:W3TC_ENC}" -F
    RewriteRule .* "/wp-content/w3tc/pgcache/%{REQUEST_URI}/_index%{ENV:W3TC_UA}%{ENV:W3TC_REF}%{ENV:W3TC_SSL}.html%{ENV:W3TC_ENC}" [L]
    </IfModule>
    # END W3TC Page Cache core
    # 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
DirectoryIndex index.php index.html index.htm

외부자원

외부 사이트의 질문과 관련된 정보입니다.

나의블로그

내가 문제가 있는 페이지와 내가 문제를 해결할 때까지 볼 수 있는 페이지.UX와 SEO의 이유로 웹페이지 번역본에서 하위 카테고리를 삭제하였습니다.

  • 스웨덴어: http://erik.landvall.se
  • 영문: http://erik.landvall.se/en

지금은 번역이 완료되지 않은 상태입니다 witch는 내용이 다른 이유입니다.

wpml.org

저는 2년 전에 게시된 wplm.org 에서 제 문제를 정확하게 설명하는 주제를 발견했습니다.답을 읽었는데 아쉽게도 해결되지 않고 끝이 났습니다.

http://wpml.org/forums/topic/error-on-subcategories/ 에서 인용됨

워드프레스의 하위 카테고리에 문제가 있는 것 같습니다.워드프레스 2.92를 사용하고 있는데 하위 카테고리로 전환하면 404 에러 페이지가 나타납니다.하지만 제가 그것으로 다시 전환했을 때, 그 게시물들은 주요 카테고리에 나타납니다.이러한 문제는 주 언어에서는 발생하지 않고 다른 언어에서만 발생합니다.그래서 제가 주 언어에 있을 때, 게시물은 다른 언어가 아닌 소분류와 주분류 아래에 나타나는데, 여기서는 주 언어로만 나타납니다.

아래 업데이트를 확인해주시기 바랍니다.

이 문제에 대한 해결책은 Apache 구성에 있습니다.경로를 WordPress의 index.php 파일의 매개 변수로 변환하는 정규식을 변경해야 합니다.

WordPress는 PHP를 작업하는 매우 높은 수준의 시스템이며, 그 자체도 매우 높은 수준의 시스템입니다.WordPress는 서버에 도달할 때 URL에 액세스할 수 없습니다.index.php 파일만 있고 이 파일에 요청을 해야 요청을 처리할 수 있습니다.

이를 가능하게 하기 위해 서버가 요청을 어떻게 할지 결정하기 전에 요청을 수정하는 Apache 모듈인 mod_rewrite를 사용합니다.

서버의 오류 로그를 확인해 주시기 바랍니다.서버가 액세스하려고 시도한 실제 파일을 볼 수 있습니다.그리고 확인 부탁드립니다..htaccess파일 WordPress가 폴더에 생성됩니다.이 파일에서 mod_rewrite가 사용하는 정규 표현식을 볼 수 있습니다.

블로그를 확인해보니 이미 해결하신 것 같습니다.저는 같은 문제를 가진 다른 사람들이 혜택을 받을 수 있도록 글을 쓰고 싶었습니다.특히 2년 전에 다른 곳에 다른 게시물이 있다고 언급한 것을 보고도 말입니다.

업데이트:

나는 내가 "나는 거의 확신한다"고 말한 것이 기쁩니다.." :D (이 답변에 대한 코멘트를 참조) 몇 년 전에 해결했던 상황과는 상황이 조금 다른 것 같습니다.

워드프레스 코드를 확인하고 몇 가지 시도를 했습니다.저는 원래 /en/ 때문에 워드프레스가 기사를 찾을 수 없다고 생각했는데, 제가 틀렸습니다.URL에서 게시물을 찾는 WordPress의 기본 동작은 일종의 긍정적인 부작용으로 상황을 커버합니다.내가 플러그인을 가지고 있지 않거나, 어떤 언어도 가지고 있지 않다고 가정해 보겠습니다./en/WordPress에게 아무 의미가 없습니다.

찾아보기를 원할 때erik.landvall.se/en/예상대로 404를 반환합니다.그러나, 만일 우리가 카테고리 구조를 가지고 있다면,abc/cde/efg/라고 하는 기사.moo에서 접근할 수 있는abc/cde/efg/moo; 링크의 카테고리 부분을 변경하면 WordPress에서 자동으로 다음으로 리디렉션됩니다.abc/cde/efg/moo:

en/abc/cde/efg/moo abc/efg/moo cde/efg/moo...

모두 리디렉션abc/cde/efg/moo을 본 적이 당신의 블로그에서도 당신의 플러그인을 현장에 불러오는 en/을 제외하고는 똑같은 행동을 본 적이 있습니다.플러그인이 원래 워드프레스와 다른 방식으로 URL 구조를 처리하거나 다른 방식으로 원래 동작을 변경하는 것은 명백합니다.

약속한대로 플러그인 소스를 확인하고 싶었지만 지금은 구매해야 소스를 볼 수 있는 제품이고 절대 사용하지 않을 제품을 구매할 의향이 없기 때문에 불가능하다고 생각했습니다 :)

당신이 "부모 카테고리에서 나는 여전히 게시물을 볼 수 있고 문제없이 그것으로 이동할 수 있습니다."라고 말했기 때문입니다.url에서 하위 카테고리를 제거하려고 생각했습니다.이것은 꽤 더러운 해킹이지만 플러그인을 편집하는 것보다는 낫습니다.

우리는 이 추악한 php 파일을 넣었습니다.fix_lang_subcategory.php, 루트 폴더로:

<?php

function fix_lang_subcategory() {
    $p = trim($_SERVER['REDIRECT_URL'], '/');
    if (substr_count($p, '/') > 2) {
        $_SERVER['REQUEST_URI']='/'.substr($p, 0, strpos($p,'/',4)).'/'.substr($p, strrpos($p, '/')+1).'/'.($_SERVER['QUERY_STRING'] ? '?'.$_SERVER['QUERY_STRING'] : '');
    }
};
fix_lang_subcategory();
require_once('index.php');
?>

이 후 /fix_lang_subcategory.php에서 워드프레스의 404 파일을 확인할 수 있습니다.작동이 된다면 .htaccess 파일을 편집할 수 있습니다.

.htaccess 파일의 끝에, 다음.

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

다음 줄을 추가합니다.

RewriteRule ^en/ /fix_lang_subcategory.php [L]

여기서 우리가 하는 일은 wordpress의 index.php에서 어리석은 php 파일로 진입점을 변경하여 원본 소스를 건드리지 않고 몇 줄의 php를 실행할 수 있도록 하는 것입니다.사이트의 /en/ 부분에 대해서만 작동합니다.휴식은 지금처럼 효과가 있습니다.우리의 php 파일에서 우리는 하위 카테고리가 있는 링크를 보고 있는지 확인하고 만약 있다면 우리는 변경합니다(이것은 좋은 것이 아닙니다!).)아래와 같이 REQUEST_URI:

/en/maincategory/subcategory1/subcategory2/article/?anything_here_untouched

로.

/en/maincategory/article/?anything_here_untouched

그리고 워드프레스를 떠나 정상적으로 업무를 수행합니다.

하위 범주를 사용하도록 설정할 때 플러그인이 다르게 작동하면 /en/ 아래의 하위 범주 페이지를 리디렉션할 수 있습니다.

더 나은 해결책:

대체 언어에 대해 하위 도메인을 사용하고 싶지 않으신 줄 알았는데, 질문에 대한 댓글에 "번역된 블로그 버전을 하위 디렉토리/하위 도메인에서 호스팅할 수 있나요?"라는 글이 올라왔는데, 답변에서 하위 디렉토리에 대한 언급이 오해를 불러일으킨 것 같습니다.ML 플러그인의 웹사이트에서 본 바와 같이 폴더 대신 하위 도메인을 사용하면 모든 문제를 해결할 수 있습니다.

대신에http://erik.landvall.se/en사용해도 좋습니다http://en.erik.landvall.se/ 그럴 수도?

더 나은 솔루션:

ML Plugin이 이 문제를 일으킬 가능성이 90%에 달합니다.지원 티켓을 시작하는 것이 문제를 인식하고 다른 모든 사람을 위해 해결하는 데 도움이 될 수 있습니다.

언급URL : https://stackoverflow.com/questions/10568616/wpml-subcategory-pages-generates-404-wordpress

반응형