2015-09-21 3 views
0

Этот вопрос задан в SO раньше, но предлагаемые решения не работают для меня. How can I remove this directory/folder from url with htaccess rewrite?Используйте .htaccess, чтобы удалить папку каталога из URL

У меня есть многостраничный wordpress install, который я унаследовал, и у него есть один файл .htaccess в корневом каталоге сайта.

мне нужно сделать глобальный редирект на всех URL-адресов, как этот http:thewebsite.com/jol/blog/author/myles/, чтобы перейти к http:thewebsite.com/jol/author/myles/

До сих пор я попробовал этот код в файле .htaccess:

# BEGIN WordPress 
Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 

# Remove subdirectory of "blog" from URLs 
RewriteCond %{THE_REQUEST} \ /blog/ 
RewriteRule ^blog/(.*)$ /$1 [L,R=301] 

и этот код:

# BEGIN WordPress 
Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{THE_REQUEST} \ /blog/ 
RewriteRule ^blog/(.*)$ /$1 [L,R=301] 

и, наконец, этот код:

# BEGIN WordPress 
Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteRule ^blog/(.*)$ /$1 [R=301,NC,L] 

и абсолютно никто из них не работает вообще. Единственная вещь, которая была успешна до сих пор, нацелена на каждый URL отдельно и выполняет перенаправление, которое ... PAINFUL.

Любая помощь была бы чрезвычайно оценена.

+0

Узор '^ блог /' потерпит неудачу, потому что ваши URL-адреса начинаются с 'Жол /' – hjpotter92

+0

Благодаря! Это имеет такой смысл, когда я смотрю на это сейчас. Как бы тогда я нацелился на следующий дочерний каталог «blog»? –

+1

Попробуйте этот 'RewriteRule^(. * (? = Blog /)) блог /(.*)$ $ 1 $ 2 [NC, L, R = 301]' – hjpotter92

ответ

1

Правила, которые вы пробовали, не работали, потому что у вас были: ^blog/ в ваших шаблонах. Поскольку URL-адреса, которые вы хотели бы переписать, имеют форму jol/blog/..., правило должно быть обновлено.

Предполагая, что jol может отличаться; использовать правило:

RewriteRule ^(.+/(?=blog/))blog/(.*)$ $1$2 [R=301,L,NC] 

и если jol всегда будет в правилах, просто использовать, что:

RewriteRule ^jol/blog/(.*)$ jol/$1 [R=301,L,NC] 
Смежные вопросы