2013-10-24 108 views
0

我已将HTML网站更改为WordPress安装。.htaccess用名称中的空格重定向旧的html页面

旧的.html链接已被重定向到正确的wordpress页面。这个旧网站显然是由一只猴子建造的,它在ons.html上有一个页面。没错,它在文件名中有一个空格。所以,现在,我在/over%20ons.html上收到外部请求。我无法弄清楚我在.htaccess中如何解决这个重定向问题。它必须参考的页面是/ over-ons /。

这是我的.htaccess至今:

RedirectMatch 301 ^/([^/.]+)\.html$ /$1/ 
Redirect 301 /over%20ons.html http://www.sterkermerk.nl/over-ons/ 
Redirect 301 /index.html http://www.sterkermerk.nl/ 
# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 
# END WordPress 

第二行包含了规则。我试图逃避%20,尝试在RedirectMatch中使用正则表达式,但我无法使它正常工作。

有人有想法吗?

回答

0

使用mod_rewrite,而不是mod_alias中(Redirect语句),因为你已经使用了mod_rewrite,他们会相互冲突:

RewriteRule ^over\sons\.html$ http://www.sterkermerk.nl/over-ons/ [L,R=301] 
RewriteRule ^index\.html$ http://www.sterkermerk.nl/ [L,R=301] 
RewriteRule ^([^/.]+)\.html$ /$1/ [L,R=301] 

(更换Redirect *语句)

URI是在通过重写规则发送前解码,因此您不需要使用%20,只需要\s\即可匹配空格。

+0

感谢您回答Jon Lin,我已经用您的代码更新了我的.htaccess。但是,当我导航到http://www.sterkermerk.nl/over%20ons.html它仍然无法正常工作。 – veelen

+0

@veelen实际上,你甚至不需要第二个规则,第一个规则应该匹配所有东西 –

+0

然后它不会重定向到/ over-ons /但是到/ over%20ons/ – veelen

相关问题