Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.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
从WordPress htaccess中排除目录并重定向旧的.html文件_Wordpress_Apache_.htaccess_Mod Rewrite_Redirect - Fatal编程技术网

从WordPress htaccess中排除目录并重定向旧的.html文件

从WordPress htaccess中排除目录并重定向旧的.html文件,wordpress,apache,.htaccess,mod-rewrite,redirect,Wordpress,Apache,.htaccess,Mod Rewrite,Redirect,我有一个WordPress安装,它正在替换一个旧网站。旧的(移动式)网站有.html文件,我想将这些文件重定向到新的等价文件。这可以将/foo.html重定向到/foo/: <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule (.+)\.html$ /$1/ [L,R=301] </IfModule> 我有两个问题: 如果我注释掉第一个块,那新行仍然不允许我访问,比如说/mydirect

我有一个WordPress安装,它正在替换一个旧网站。旧的(移动式)网站有
.html
文件,我想将这些文件重定向到新的等价文件。这可以将
/foo.html
重定向到
/foo/

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule (.+)\.html$ /$1/ [L,R=301]
</IfModule>
我有两个问题:

  • 如果我注释掉第一个块,那新行仍然不允许我访问,比如说
    /mydirectory/foo.html
    -WP重定向到
    /missing/
    。我不明白为什么

  • 我不知道如何结合这两套规则。也就是说,
    /mydirectory/
    中的任何内容都可以像以前一样访问,但是所有以
    .html
    结尾的其他URL都应该重写为
    /filename/
    ,WP的其他内容也可以正常工作

  • 这样做:

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    
    # NEW RULE to ignore rewriting for anything in mydirectory
    RewriteRule ^mydirectory(/.*)?$ - [L,NC]
    
    RewriteRule ^(.+?)\.html$ /$1/ [L,R=301,NC]
    
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . index.php [L]
    </IfModule>
    
    
    重新启动发动机
    重写基/
    #对mydirectory中的任何内容忽略重写的新规则
    重写规则^mydirectory(/.*)-[L,NC]
    重写规则^(+?)\.html$/$1/[L,R=301,NC]
    重写规则^index\.php$-[L]
    重写cond%{REQUEST_FILENAME}-F
    重写cond%{REQUEST_FILENAME}-D
    重写规则。index.php[L]
    
    谢谢阿努巴瓦,这似乎很管用!我一个人永远也到不了那里。
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    
    # NEW RULE to ignore rewriting for anything in mydirectory
    RewriteRule ^mydirectory(/.*)?$ - [L,NC]
    
    RewriteRule ^(.+?)\.html$ /$1/ [L,R=301,NC]
    
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . index.php [L]
    </IfModule>