2012-06-18 17 views
9

Blog z moim wordpress jest zainstalowany pod numerem domain.com/blog i mam stronę z podstronami, których struktura wygląda na domain.com/blog/page i domain.com/blog/page/subpage.Przepis na URL poza bazą Wordpress

Chcę, aby moi goście mogli przejść do domain.com/subpage i zobaczyć zawartość domain.com/blog/page/subpage bez przekierowania do tego adresu URL na zewnątrz, unikając przepisywania słowa kluczowego wordpress.

Próbowałem za pomocą RewriteRule ^subpage$ /page/subpage [L] a zawartość jest serwowane, ale url wygląda domain.com/blog/page/subpage

.htaccess (Przypuszczam permalinks Wordpress są dotarcia do niej.):

# 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:

te dzienniki pokazują aktywność na stronie wizyty -

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" 

Również tutaj jest mój główny .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

Spróbuj wstawienie kodu * przed * Opcja 'RewriteBase/blog /' –

+0

sam problem - mnóstwo treści, ale URL nadal '/ blog/strona/podstrona /' –

+0

Z ciekawości, co się stanie, jeśli zmieni regexp reguły za do: '^ subpage/$'? –

Odpowiedz

3

Dodawanie pewne zasady w swojej htaccess, natomiast przy użyciu Wordpress, jest zawsze trudne. Zamiast tego powinieneś użyć jego API do przepisywania.

Pierwszy, umieścić ten kod przy czym koniec /wp-content/themes/CURRENT_THEME_ACTIVATED/functions.php:

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

uwaga: należy określić poziom stron w pagename parametr, w przeciwnym razie URL zmieni.

Następnie, musisz powiedzieć Wordpressowi, że musi wziąć pod uwagę twoją nową regułę. W tym celu przejdź do panelu administracyjnego: Settings>Permalinks> kliknij przycisk Save. Teraz powinieneś być w stanie przejść do domain.com/blog/subpage i zobaczyć zawartość domain.com/blog/page/subpage (adres URL już się nie zmienia).

Wreszcie, jeśli chcesz, aby domain.com/subpage dotrzeć, trzeba dodać htaccess w katalogu głównym i umieścić ten kod do niego:

RewriteEngine On 
RewriteBase/

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

I ... to wszystko. Możesz przejść do domain.com/subpage, a teraz dostaniesz to, co chcesz.

Powiązane problemy