Probleme cu Permalink-urile la Instalarea WordPress în Subdirector / Subfolder
Am instalat WP în subfolderul /cms
și rulează live fără subfolder. Când folosesc /%postname%/
ca permalink primesc eroare 404 pe site. Serverul meu suportă mod_rewrite
.
Codul Meu
wp-config.php
define('WP_SITEURL', 'http://www.sitename.de/cms');
define('WP_HOME', 'http://www.sitename.de');
root
1) .htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /cms/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /cms/index.php [L]
</IfModule>
2) index.php
<?php
// Definim utilizarea temelor
define('WP_USE_THEMES', true);
// Includem fișierul header-ului blog-ului
require('./cms/wp-blog-header.php');
?>
/cms
1) .htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
2) index.php
<?php
// Definim utilizarea temelor
define('WP_USE_THEMES', true);
// Includem fișierul header-ului blog-ului
require('./wp-blog-header.php');
?>
Mulțumesc pentru ajutor
Ogni

Ceea ce fac în mod obișnuit
- Instalez WP într-un subdirector.
- Deschid setările de legături permanente și configurez structura dorită.
- Accesez setări->general și secțiunea de link-uri
- Elimin numele subdirectorului din 'Adresa site-ului (URL)'
- Tai fișierele index.php și .htaccess din subdirector și le lipesc în directorul rădăcină
- modific codul în index.php așa cum ai făcut.
- Accesez din nou setări->legături permanente și salvez formularul
Gata. Nu ai nevoie de fișierele index.php și .htaccess în subdirector.

Destul de ciudat, asta contravine cu ceea ce scrie în codex Giving_WordPress_Its_Own_Directory. Acolo se spune să păstrezi o copie atât a index.php
cât și a .htaccess
. Aveți vreo sugestie în legătură cu asta?
Vă rog să rețineți: Nu sunt un expert în .htaccess
, și încă nu mi-e clar cum ar trebui să arate aceste fișiere în fiecare folder.

Am avut o problemă similară și problema nu era în cod, ci în fișierul httpd
- Deschideți fișierul de configurare Apache situat la /etc/httpd/conf/httpd.conf (sau apache.conf pentru Ubuntu)
- Schimbați AllowOverride None în AllowOverride All în interiorul directivei Directory pentru DocumentRoot, în mod normal

soluția mea la această problemă, care funcționează întotdeauna în cazul meu;
creează un fișier .htaccess în subdirector și adaugă codul care este generat atunci când schimbi permalinkurile în partea de jos a paginii.
exemplu de cod generat;
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /kimco/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /kimco/index.php [L]
</IfModule>

Elimină fișierul .htaccess din directorul /cms și apoi accesează Setări -> Legături permanente pentru a reîmprospăta regulile de rescriere. De asemenea, asigură-te că URL-ul site-ului și URL-ul de acasă sunt configurate corect în baza de date (așa cum le ai în wp-config).

dacă definești site și home url în wp-config, orice este în baza de date va fi ignorat

@Milo: Corect
Când reîmprospătez permalink-urile (wp admin-area), fișierul .htaccess din root arată astfel: .. RewriteBase /
... RewriteRule . /index.php [L]
dar cred că ar trebui să arate: ... RewriteBase /cms
... RewriteRule . /cms/index.php [L]
