Problemi di Permalink nell'Installazione di WordPress in Sottodirectory / Sottocartella
Ho installato WP nella sottocartella /cms
e funziona live senza sottocartella. Quando uso /%postname%/
come permalink ottengo un errore 404 sul mio sito. Il mio server supporta mod_rewrite
.
Il Mio Codice
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
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');
?>
Grazie per il vostro aiuto
Ogni

Cosa faccio generalmente
- Installo WP in una sottocartella.
- Apro le impostazioni dei permalink e configuro la struttura desiderata.
- Vado su Impostazioni->Generale
- Rimuovo il nome della sottocartella dal campo 'Indirizzo sito (URL)'
- Taglio i file index.php e .htaccess dalla sottocartella e li incollo nella root
- Modifico il codice in index.php come hai fatto tu.
- Riaccedo a Impostazioni->Permalink e salvo il modulo
Fatto. Non avrai più bisogno dei file index.php e .htaccess nella sottocartella.

Stranamente, questo va contro quanto riportato nel codex Giving_WordPress_Its_Own_Directory. Lì dicono di mantenere una copia sia di index.php
che di .htaccess
. Qualche suggerimento al riguardo?
Nota bene: non sono un esperto di .htaccess
, e c'è ancora qualcosa che non mi è chiaro su come dovrebbero essere questi file in ciascuna cartella.

Ho avuto un problema simile e il problema non era nel codice ma nel file httpd
- Apri il file di configurazione di Apache situato in /etc/httpd/conf/httpd.conf (o apache.conf per Ubuntu)
- Cambia AllowOverride None in AllowOverride All all'interno della direttiva Directory del DocumentRoot, normalmente

La mia soluzione a questo problema, che funziona sempre nel mio caso:
crea un file .htaccess nella sottodirectory e aggiungi il codice che viene generato quando cambi i permalink in fondo alla pagina.
esempio del codice generato:
<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>

se definisci gli URL del sito e della home in wp-config, qualsiasi cosa presente nel database verrà ignorata

@Milo: Esatto
Quando aggiorno i miei permalink (area admin di wp), il file .htaccess nella root appare così: .. RewriteBase /
... RewriteRule . /index.php [L]
ma penso che dovrebbe essere: ... RewriteBase /cms
... RewriteRule . /cms/index.php [L]
