Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess 301将子目录url重定向到固定子目录url_.htaccess_Redirect_Mod Rewrite - Fatal编程技术网

.htaccess 301将子目录url重定向到固定子目录url

.htaccess 301将子目录url重定向到固定子目录url,.htaccess,redirect,mod-rewrite,.htaccess,Redirect,Mod Rewrite,我需要重定向以下所有URL: /blog/blog/this-is-an-example-page/ /blog/blog/hello-how-are-you/ /blog/blog/2015/04/29/old-article/ /blog/blog/2014/09/12/ 发送至以下目录: /blog/ 然后就失去了URL的其余部分。因此,/blog/blog/这是一个示例页面/不会转到/blog/这是一个示例页面/,而是转到/blog/。这是我的.htaccess文件中应该执行此操作的

我需要重定向以下所有URL:

/blog/blog/this-is-an-example-page/
/blog/blog/hello-how-are-you/
/blog/blog/2015/04/29/old-article/
/blog/blog/2014/09/12/
发送至以下目录:

/blog/
然后就失去了URL的其余部分。因此,
/blog/blog/这是一个示例页面/
不会转到
/blog/这是一个示例页面/
,而是转到
/blog/
。这是我的.htaccess文件中应该执行此操作的行,但它不起作用:

RewriteRule ^blog/blog/(.*)$ /blog/$1 [R=301,L,NC]
这是完整的.htaccess文件内容:

Options +FollowSymLinks
RewriteEngine On

# Force https and www
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.easterisland.travel/blog/$1 [R,L]


# BEGIN WordPress
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
# END WordPress

RewriteRule ^blog/blog/(.*)$ /blog/$1 [R=301,L,NC]
此文件位于/blog/dir中。


我做错了什么?为什么它不工作?

您不需要与htaccess文件所在的文件夹匹配,请尝试:

RewriteRule ^blog/(.+)$ /blog/$1 [R=301,L,NC]
请尝试此Htaces:

Options +FollowSymLinks
RewriteEngine On
    # Force https and www
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.easterisland.travel/blog/$1 [R,L]
  # BEGIN WordPress
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteRule ^blog/(.+)$ /blog/ [R=301,L,NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
# END WordPress

将重定向规则放在其他规则之前,并修复您的
www+https
规则:

Options +FollowSymLinks
RewriteEngine On

# Force https and www
RewriteCond %{SERVER_PORT} 80 [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.easterisland.travel/$1 [R=301,L,NE]

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

# BEGIN WordPress
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
# END WordPress

测试此更改时,请确保完全清除浏览器缓存。

谢谢您的回复,但不幸的是,它不起作用!差不多了,我的朋友!我们快到了。它现在正在重定向,但它记住了/blog/blog/*之后的URL部分,我希望它立即将其切断。因此,/blog/blog/这是一个示例页/没有转到/blog/这是一个示例页/,但是转到/blog/。效果非常好,谢谢!请注意,您没有更新顶部第一行的代码。谢谢谢谢你,但还是不行。我使用的是Chrome,每次都会打开一个新的私有会话窗口,以确保没有缓存任何内容。我正在尝试输入此URL,但没有新闻。感谢您使用正确的www+https规则提供帮助!加1