解释mod_rewrite问题

时间:2015-01-20 13:22:39

标签: wordpress apache .htaccess mod-rewrite redirect

我将wordpress网站的永久链接结构从/%postname%.html更改为/%postname%/。我想将所有旧网址重定向到新结构,因此我将以下内容添加到我的.htaccess:RedirectMatch 301 ^/([^/]+).html$ /$1/。所以现在我的.htaccess看起来像这样:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RedirectMatch 301 ^/([^/]+).html$ /$1/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

它重定向我的旧帖子网址就好了,但它弄乱了我的主页。如果我尝试访问我的网站/的根目录,则会重定向到/index/

有人可以解释为什么会发生这种情况以及如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我明白了。我改变了我的DirectoryIndex,所以它直接转到index.php:

DirectoryIndex index.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RedirectMatch 301 ^/([^/]+).html$ /$1/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>