.htaccess 如何在htaccess中为不包含特定字符串的所有URL添加重定向?

.htaccess 如何在htaccess中为不包含特定字符串的所有URL添加重定向?,.htaccess,mod-rewrite,redirect,wordpress,.htaccess,Mod Rewrite,Redirect,Wordpress,我的wordpress博客有一些htaccess问题。我以前的url类似于 article-name.html 现在我将结构更改为 blog/article-name.html 但我在其他网站上共享的旧url仍然有404。我尝试在htaccess中添加规则,也尝试了“重定向”插件,但没有成功: 在.htaccess中,我尝试了: <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST

我的wordpress博客有一些htaccess问题。我以前的url类似于

article-name.html

现在我将结构更改为

blog/article-name.html

但我在其他网站上共享的旧url仍然有404。我尝试在htaccess中添加规则,也尝试了“重定向”插件,但没有成功:

在.htaccess中,我尝试了:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^((?!blog/).)*.html$ - /blog/$1.html [L]
</IfModule>

重新启动发动机
重写基/
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^((?!blog/)*.html$-/blog/$1.html[L]

更改重新布线基础


但是您的.htaccess不是原始的WordPress.htaccess。为什么不使用它?

您的正则表达式似乎有问题,请尝试以下方法:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^((?!blog/).+?\.html)$ /blog/$1 [L,R=301,NC]

我把这个添加到原始的结尾。htaccessNever在那里测试它,因为它不是可靠的站点。在本地测试它。顺便说一句,我在发布之前已经测试过这个规则。任何ir都会将
anything.html
重定向到
/blog/anything.html
确保这是您的第一条规则