2015-05-15 9 views
11

Sto creando la pagina blog come WordPress per il mio sito Web PHP statico. Quando l'URL della pagina blog cambia in example.com/blog/my-post-page, caricamento dei contenuti (non reindirizzamento a index.php, solo il caricamento dei contenuti e l'URL sarà come http://example.com/blog/my-post-page) di index.php (home page per il mio sito) che si trova all'esterno della cartella blog invece dei contenuti di single.php .Caricamento dei contenuti index.php che si trovano all'esterno della cartella del blog per la singola pagina post

Quando permalink modifiche default (example.com/blog/?p=123), funzionerà perfettamente.

Ho bisogno dell'URL come http://example.com/blog/my-post-page.

MODIFICA: - Ho aggiornato il permalink alla struttura personalizzata come /index.php/%postname%/. Ma ora le pagine dei post vengono visualizzate con example.com/blog/index.php/my-post-page.

Penso che il problema sollevato con la nuova versione di WordPress. (Versione 4.2.2). Eventuali soluzioni per rimuovere index.php dall'URL?

mio Directory Structure: -

/           - Root 
/blog          - Blog folder 
/blog/wp-content/themes/mytheme/   - Theme folder 
/blog/wp-content/themes/mytheme/single.php - Post Single page 

/index.php         - Home page (Loading contents of this file) 

mio .htaccess: -

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase /blog/ 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

Quando ho cancellazione/cambia titolo index.php nella cartella principale, pagina mostrerà errore non trovato.

+0

non ottengo la parte in cui si sta parlando di 'index.php' (quella radice, al di fuori del' directory blog') e 'singolo. php' (che cos'è? Che cosa deve fare questo file qui?) –

+2

@JustinIurman la mia pagina è index.php e la pagina di dettaglio post è single.php (concetto WP). Qui il problema è che nella cartella del blog esterno c'è un altro file chiamato index.php (Home page per il sito). Quando accedo alla pagina dei dettagli del post nel blog come piuttosto permalink (example.com/blog/my-post-page) verrà reindirizzato al file index.php all'esterno della cartella del mio blog.Poi ho cambiato il permalink in Custom Structure come /index.php/%postname%/. Quindi la pagina di caricamento del post viene caricata correttamente ma il link contiene index.php (esempio.com/blog/index.php/my-post-page). – Sree

+0

Beh, tanto per essere sicuri ... La tua directory WP è 'blog' giusto? Potresti aggiornare la tua domanda con il tuo attuale htaccess del WP? Perché è strano riscrivere l'indice radice invece dell'indice della cartella blog ... A meno che tu non abbia un problema nei percorsi htaccess per esempio –

risposta

2

Dovrebbe funzionare

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase /blog/ 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 
+0

Provato questo. Non funziona. – Sree

+5

caso abbastanza simile al tuo, dai un'occhiata https://wordpress.org/support/topic/pretty-permalinks-redirects-to-indexphp –

+2

Sì. Dal link precedente ho aggiornato il permalink personalizzato come /index.php/%postname%/. Ma ora le pagine dei post sono mostrate con example.com/blog/index.php/my-post-page. Come rimuoverlo? – Sree

3

in htaccess è possibile scrivere qualsiasi espressione regex per riscrittura URL nel tuo caso

RewriteRule ^/blog/\(.+)$ /blog/index.php?postname=$1 

questa linea significa che se URL inizia con /blog/ nulla dopo / sarebbe passato a /blog/index.php come parametro postname. example.com/blog/my-post-page sarebbe essere riscritta come example.com/blog/index.php?postname=my-post-page

è possibile escludere qualsiasi cosa, da questa regola

ad esempio cerchiamo di escludere questa: /blog/wp-content/themes/mytheme/ sarebbe andata così:

RewriteRule ^(?!/(.+)/(.+)/(.+)/(.+))/blog/\(.+)$ /blog/index.php?postname=$1 
+0

potresti aggiornare la risposta con codice htaccess completo? – Sree

+0

Non ho compreso appieno tutte le regole di riscrittura che vorresti applicare. Puoi commentare la mappa completa? in 'example.com/blog/my-post-page' -> 'example.com/blog/index.php? postname = my-post-page' questo tipo di formato? –

0

È necessario fare due modifiche qui , modificare permalink a /%postname%/.

e cambiare .htaccess a seguire

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase /blog/ 
    RewriteRule ^index\.php$ - [L] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule . /blog/index.php [L] 
</IfModule>