Post name permalink HTTP 404
이 사이트의 첫 페이지를 작성했습니다.기본 Permalink 설정을 사용하면 작동합니다.
Post name을 사용하도록 permalink 설정을 변경하면 HTTP 404가 표시됩니다.
뭐가 잘못됐는지, 내가 뭘 망가뜨렸는지 모르겠어.누가 고쳐줄 사람 있어요?
이 사이트는 Apache에서 호스트됩니다.
XAMPP 또는 MAMP를 사용하고 있습니까?WordPress Codex: Fixing Permalink Problems에서 따온 몇 가지 일반적인 딸꾹질이 있습니다.
XAMPP 사용자(Windows):일부 버전의 XAMPP는 기본적으로 mod_rewrite를 활성화하지 않습니다(단, Apache에서 컴파일되어 있습니다).이 기능을 활성화하고 WordPress가 예쁜 permalink를 작성하기 위해 필요한 .htaccess 파일을 쓸 수 있도록 하려면 apache/conf/httpd.conf를 열고 LoadModule rewrite modules/mod_rewrite.so 행의 코멘트를 해제해야 합니다(즉, 행의 선두에 있는 해시/파운드 부호를 삭제합니다).
WAMP 사용자(Windows):일부 WAMP 버전(모든 버전?)에서는 기본적으로 mod_rewrite를 활성화하지 않거나 다음 SymLink를 허용하지 않습니다.필요한 기능을 활성화하려면 apache/conf/httpd.conf 파일로 이동하여 텍스트에디터로 열고 LoadModule rewrite modules/mod_rewrite.so 행의 코멘트를 해제합니다(즉, 행 맨 앞에 있는 해시/파운드 기호를 삭제합니다).그리고 같은 파일 아래에는 "Options FollowSymlinks(옵션 팔로우 심링크)" 행으로 시작하는 섹션이 있습니다.해당 섹션의 두 번째 행을 "AllowOverride none"에서 "AllowOverride all"로 변경합니다.편집한 httpd.conf를 저장하고 모든 WAMP 모듈을 재시작합니다.이제 퍼멀링크가 효과가 있을 거야
또한 샌드박스에 mod_rewrite가 없는 경우 Permalinks가 표시될 수 있습니다.mod_rewrite
이용할 수 있는.
아파치
Apache를 사용하는 경우 일반적으로 두 가지 다른 원인이 고장난 퍼멀링크의 원인이 있습니다..htaccess
(권한 설정 때문에) 생성되지 않거나 Apache의AllowOverride
디렉티브가 활성화되지 않았습니다.
먼저 서버에 SSH를 하면 루트에 생성된 .htaccess 파일이 표시됩니까?그렇지 않으면 WordPress에 해당 파일을 쓸 수 있는 권한이 없을 수 있습니다.파일이 존재할 수도 있지만 WordPress가 편집할 수 없습니다.어느 경우든 이 파일을 666으로 만들 수 있습니다.
그런 다음 Apache 구성에 다음 설정이 있는지 확인하십시오.
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
마지막으로 WordPress Codex의 "Permalink 문제 수정" 섹션을 읽어보십시오.왜 퍼멀링크가 작동하지 않는지에 대한 몇 가지 다른 조언과 제안들이 있다.
..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
WordPress는 쓰기 권한이 있는 경우 이 작업을 자동으로 수행합니다.을 쓸 수 되어 위의 코드 할 수..htaccess
.
후, ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★apache2.conf
에서는 파에 . Linux 、 、 그 linux/etc/apache2/apache2.conf
거예요 , 하다, 하다, 이런 요.
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
AllowOverride None
로로 합니다.AllowOverride FileInfo
.
마지막으로 다음 명령을 수행합니다.
sudo a2enmod rewrite
service apache2 restart
이 모든 단계는 작동하기 위해 필요했습니다.
다른 사이트에서 이 게시물을 발견하면 이미 많은 사람들이 도움을 받았다.
드디어 문제를 풀었어!해결 방법:커스텀 퍼머링크 구조(http://kyl.fi/%category%/%postname%/)를 사용하고 있었습니다.후행 슬래시(마지막 /)와 voila를 제거했습니다.다만, 이전에도 후행 슬래시가 있는 퍼멀링크 구조를 문제없이 사용한 것이 확실하기 때문에, 아직 혼란스러우므로, 누군가 설명을 해 주신다면, 이 건에 대해 더 듣고 싶다고 생각하고 있습니다.
모든 표준 퍼말링크는 뒤에/뒤가 있다.
centos 8 및 apache 2.4에서 사이트 .conf 파일에서 /etc/httpd/conf.d를 찾아 AllowOverride All을 추가합니다.이 예시는 다음과 같습니다.
<Directory /path/to/site>
#add the following setting to allow .htaccess in your web dir to work
AllowOverride All
</Directory>
80 Listen 포트
#Listen 80
<VirtualHost *:80>
DocumentRoot "/var/www/mysite.com"
ServerName www.mysite.com
# Other directives here
<Directory "/var/www/mysite.com">
Options FollowSymLinks
AllowOverride All
</Directory>
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.mysite.com [OR]
RewriteCond %{SERVER_NAME} =mysite.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
내 SSL 가상 호스트:
<IfModule mod_ssl.c>
<VirtualHost *:443>
DocumentRoot "/var/www/mysite.com"
ServerName www.mysite.com
# Other directives here
<Directory "/var/www/mysite.com">
Options FollowSymLinks
AllowOverride All
</Directory>
ServerAlias mysite.com
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/mysite.com/fullchain.pem
SSLCertificateKeyFile /live/mysite.com/privkey.pem
</VirtualHost>
</IfModule>
Apache 서비스를 재시작합니다..htaccess를 확인합니다(내 사이트에서 .htaccess는 /var/www/mysite.com My .htaccess에 있습니다).
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^helloWorld/?$ /index.php [NC,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
look hello 월드 리라이트 규칙URL www.mysite.com/helloWorld 를 기동했을 때에 브라우저에 홈페이지가 표시되었을 경우, 설정은 유효하고, 사이트의 퍼멀링크 패스는 유효합니다.
제 경우 워드프레스 설치 시 NGINX 웹 브라우저를 사용하고 있습니다.수정은 다음 코드 스니펫을 NGINX 디렉티브에 추가하는 것입니다.
location / { try_files $uri $uri/ /index.php?$args; } # Add trailing slash to */wp-admin requests. rewrite /wp-admin$ $scheme://$host$uri/ permanent; location ~* \.(jpg|jpeg|png|gif|css|js|ico)$ { expires max; log_not_found off; }
우수한 (오픈 소스) CPanel 대체품을 사용하는 경우 사이트 페이지로 이동하여 옵션 탭에서 NGINX Directives에 대한 위의 코드 스니펫을 입력합니다.ISPconfig에는 [Options]탭에 접속하기 위한 공통 코드 스니펫을 추가하는 기능이 있습니다.
위의 수정 후 WordPress의 Permalinks 옵션 중 하나를 사용할 수 있게 되었습니다.
테스트 완료 솔루션:
예를 들어 apache2 구성 파일에서 다음을 수행합니다.
/etc/mysite2/mysite-enabled/000-default.conf 또는 mysite.conf 등.
되어 있고 있지 합니다.param은 비어 있지 않습니다.ServerName www.example.com or 123.212.333.111
또한 다음과 같이 디렉토리 규칙을 설정했는지 확인하십시오(재작성 규칙이 .htaccess에서 활성화되지 않았을 수 있으므로 여기에 두고 .htaccess가 .htaccess가 작동하지 않는 이유를 알아봅니다).
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</Directory>
2점 체크: 1이어야 합니다..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
- 또한 .htaccess 파일의 권한은 644여야 합니다.
이 코드를 /etc/apache2/sites_available/000-default.conf에 추가했습니다.
<Directory "/var/www/mysite.com">
Options FollowSymLinks
AllowOverride All
</Directory>
Apache 2.4.46 (Ubuntu)를 사용하고 있습니다.감사해요.
언급URL : https://stackoverflow.com/questions/24265305/http-404-with-post-name-permalink
'programing' 카테고리의 다른 글
표 셀의 맨 위에 이미지 정렬 (0) | 2023.03.15 |
---|---|
Oracle - TO_CHAR로 변환할 때 선두 0이 사라지는 이유는 무엇입니까? (0) | 2023.03.15 |
PHPUnit MockObjects가 파라미터를 기반으로 다른 값을 반환하도록 하려면 어떻게 해야 합니까? (0) | 2023.02.01 |
PHP의 HTTP_HOST와 SERVER_NAME의 차이점은 무엇입니까? (0) | 2023.02.01 |
인스턴스의 클래스 이름 가져오기 (0) | 2023.02.01 |