使用.htaccess从URL中删除目录文件夹

时间:2015-09-21 04:39:27

标签: wordpress apache .htaccess mod-rewrite

之前已经问过这类问题,但提供的解决方案对我不起作用。 How can I remove this directory/folder from url with htaccess rewrite?

我有一个我继承的多站点wordpress安装,它在站点的根目录中有一个.htaccess文件。

我需要对所有网址进行全局重定向,例如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]

绝对没有一个可以工作。到目前为止唯一成功的是单独定位每个网址并执行重定向,这是......痛苦。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您尝试的规则无效,因为您的模式中有^blog/。由于您要重写的网址格式为jol/blog/...,因此应更新规则。

假设jol可能会有所不同;使用规则:

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

如果jol始终在规则中,请使用:

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