2012-06-18 8 views
9

Mein WordPress Blog ist bei domain.com/blog installiert und ich habe eine Seite mit Unterseiten, deren Struktur wie domain.com/blog/page und domain.com/blog/page/subpage aussehen.Rewrite zu URL außerhalb von Wordpress Basis

Ich möchte, dass meine Besucher zu domain.com/subpage gehen und den Inhalt von domain.com/blog/page/subpage sehen können, ohne extern zu dieser URL umgeleitet zu werden, was das Umschreiben von WordPress-Permalinks vermeidet.

ich versucht, mit RewriteRule ^subpage$ /page/subpage [L] und der Inhalt serviert wird, aber die URL sieht aus wie domain.com/blog/page/subpage

.htaccess (ich würde Wordpress Permalinks erraten, um es bekommen.):

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase /blog/ 
RewriteRule ^index\.php$ - [L] 

// tried inserting my code here. 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /blog/index.php [L] 
</IfModule> 

# END WordPress 

EDIT:

Diese Protokolle zeigen die Aktivität auf Seite besuchen -

ip - - [19/Jun/2012:14:03:53 -0400] "GET /subpage/ HTTP/1.1" 301 - "http://domain.com/referrer/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:13.0) Gecko/20100101 Firefox/13.0.1" 
ip - - [19/Jun/2012:14:03:53 -0400] "GET /blog/page/subpage/ HTTP/1.1" 200 20022 "http://domain.com/referrer/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:13.0) Gecko/20100101 Firefox/13.0.1" 

Auch hier ist meine Wurzel .htaccess -

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

RewriteCond %{HTTP_HOST} ^domain.com$ [OR] 
RewriteCond %{HTTP_HOST} ^www.domain.com$ 
+0

Versuchen Sie, Ihren Code einzufügen * vor * der 'RewriteBase/blog /' –

+0

gleichen Problem - Inhalt lädt, aber URL ist immer noch '/ blog/page/subpage /' –

+0

Aus Neugier, was passiert, wenn Sie die Regexp Regel ändern zu: '^ subpage/$'? –

Antwort

3

einige Regeln in Ihrer .htaccess Hinzufügen, während Wordpress verwenden, ist immer schwierig. Stattdessen sollten Sie die Umschreib-API verwenden.

Erste, diesen Code stellen dann von /wp-content/themes/CURRENT_THEME_ACTIVATED/functions.php Ende:

function my_custom_page_rewrite_rule() 
{ 
    add_rewrite_rule('^subpage/?', 'index.php?pagename=page/subpage', 'top'); 
} 
add_filter('init', 'my_custom_page_rewrite_rule'); 

Bemerkung: Sie müssen die Seitenebenen in pagename Parameter angeben, da sonst die URL ändern.

Dann, müssen Sie Wordpress sagen, es muss Ihre neue Regel berücksichtigen. Wechseln Sie dazu in Ihr Admin-Steuerfeld: Settings>Permalinks> klicken Sie auf die Schaltfläche Save. Jetzt sollten Sie in der Lage sein, zu domain.com/blog/subpage zu gehen und den Inhalt von domain.com/blog/page/subpage zu sehen (die URL ändert sich nicht mehr).

Schließlich, wenn Sie domain.com/subpage erreichbar machen möchten, müssen Sie eine .htaccess im Stammordner hinzufügen und diesen Code in sie gesetzt:

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)/?$ blog/$1 [L] 

Und ... das ist es. Sie können zu domain.com/subpage gehen und jetzt bekommen Sie, was Sie wollen.