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/
# 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
'source' 카테고리의 다른 글
C에서 문자열을 만들 매크로 (0) | 2023.10.19 |
---|---|
MySQL 테이블에서 열 순서가 중요합니까? (0) | 2023.10.19 |
Oracle 11g에서 분할 테이블을 한 테이블스페이스에서 다른 테이블스페이스로 이동하려면 어떻게 해야 합니까? (0) | 2023.10.19 |
WooCommerce - 카트에 있는 제품에 대해 선택된 변형을(를) (0) | 2023.10.19 |
대용량 파일을 삽입할 때 "ORA-03135: 연결 끊김" (0) | 2023.10.19 |