Problemas de enlaces permanentes al instalar WordPress en subdirectorio / subcarpeta
Instalé WP en la subcarpeta /cms
y se ejecuta en vivo sin subcarpeta. Cuando uso /%postname%/
como enlace permanente, obtengo un error 404 en mi sitio. Mi servidor tiene soporte para mod_rewrite
.
Mi Código
wp-config.php
define('WP_SITEURL', 'http://www.sitename.de/cms');
define('WP_HOME', 'http://www.sitename.de');
raíz
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
define('WP_USE_THEMES', true);
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
define('WP_USE_THEMES', true);
require('./wp-blog-header.php');
?>
Gracias por tu ayuda
Ogni
Lo que generalmente hago
- Instalar WordPress en un subdirectorio.
- Abrir los enlaces permanentes y configurar la estructura deseada.
- Abrir ajustes->enlace general
- Eliminar el nombre del subdirectorio de 'Dirección del sitio (URL)'
- Cortar los archivos index.php y .htaccess del subdirectorio y pegarlos en la raíz
- Cambiar el código en index.php como lo hiciste.
- Acceder nuevamente a ajustes->enlaces permanentes y guardar el formulario
Listo. No necesitas los archivos index.php y .htaccess en el subdirectorio.

Curiosamente, esto va en contra de lo que dice el codex Giving_WordPress_Its_Own_Directory. Allí mencionan que hay que mantener una copia de ambos archivos index.php
y .htaccess
. ¿Alguna pista sobre esto?
Nota: No soy un experto en .htaccess
, y todavía hay algo que no me queda claro sobre cómo deberían verse esos archivos en cada carpeta.

Tuve un problema similar y el problema no estaba en el código sino en el archivo httpd
- Abre el archivo de configuración de Apache ubicado en /etc/httpd/conf/httpd.conf (o apache.conf para ubuntu)
- Cambia AllowOverride None por AllowOverride All dentro de la directiva Directory del DocumentRoot, normalmente

mi solución para este problema, que siempre funciona en mi caso:
crea un archivo .htaccess en el subdirectorio y agrega el código que se genera cuando cambias los permalinks al final de la página.
ejemplo del código generado:
<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>

Elimina el archivo .htaccess en la carpeta /cms y luego ve a Ajustes -> Enlaces permanentes para actualizar las reglas de reescritura. También asegúrate de que la URL del sitio y la URL de inicio estén configuradas correctamente en la base de datos (como las tienes en el wp-config).

si defines las URLs del sitio y home en wp-config, lo que haya en la base de datos será ignorado

@Milo: Así es
Cuando actualizo mis enlaces permanentes (área de admin de wp), el .htaccess raíz se ve así: .. RewriteBase /
... RewriteRule . /index.php [L]
pero creo que debería verse así: ... RewriteBase /cms
... RewriteRule . /cms/index.php [L]
