我正在将一个网站转移到wordpress,但我想保留当前的URL结构用于搜索引擎优化目的。
当前网站使用.htm和.html文件的组合。当请求是.html时,我发现成功重定向到.htm。
例如
RedirectMatch 301 (.*)\wp-site/mywebpage.html$ http://www.mydomain.com/wp-site/mywebpage.htm
我遇到以下问题:
当.html文件有大写和小写时。我似乎无法找到一个解决方案,将任何请求重定向到其.htm等效的
例如:My-Posts / Alpha-Page.html需要重定向到my-posts / alpha-page.htm或MY-POSTS / ALPHA-PAge.html重定向到my-posts / alpha-page.htm(或任何包含大写的“my-posts / alpha-page”。基本上所有请求都需要重定向到所有小写的.htm文件)
我知道这有点困难,因为它是一个组合1)我重定向到.htm和2)因为不区分大小写。
很少有事情需要考虑:
从理论上讲,似乎应该有一种方法可以让它发挥作用。我将继续看看我是否可以在stackoverflow或其他外部资源中找到解决方案,如果我在stackoverflow找到解决方案,我会将其标记为已解决并将其删除。
感谢任何帮助!
由于
更新06/17/2011:
这是我当前的.htaccess文件
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wp-test-2011-06-13/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wp-test-2011-06-13/index.php
RedirectMatch 301 (.*)\wp-test-2011-06-13/redirect.html$ http://www.mydomain.com/wp-test-2011-06-13/redirect.htm
RewriteRule ^ORLANDO-criminal-defense-attorney/defense-attorney-NEJAME.html$ /orlando-criminal-defense-attorney/defense-attorney-nejame.htm [QSA,NC,R=301]
</IfModule>
# END WordPress
更新06/20/2011:
这是我当前的.htaccess文件:
# BEGIN WordPress
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteBase /wp-test-2011-06-13/
RewriteRule ^/wp-test-2011-06-13/index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /wp-test-2011-06-13/index.php
RedirectMatch 301 (.*)\wp-test-2011-06-13/redirect.html$ http://www.mydomain.com/wp-test-2011-06-13/redirect.htm
RewriteRule ^ORLANDO-criminal-defense-attorney/defense-attorney-NEJAME\.html$ /orlando-criminal-defense-attorney/defense-attorney-nejame.htm [QSA,NC,R=301]
</IfModule>
# END WordPress
当我输入http://www.mydomain.com/wp-test-2011-06-13/ORLANDO-criminal-defense-attorney/defense-attorney-NEJAME.html(或小写等效的.html)时,我得到一个Wordpress“找不到页面”页面
答案 0 :(得分:1)
1)是的,您可以在mod_rewrite的帮助下“轻松”完成此操作.. 但是这些说明需要放在配置文件中(内部{{ 1}} tag)不能在.htaccess中使用<VirtualHost>
指令。
RewriteMap
2)如果您无法修改配置文件,那么您至少可以将RewriteEngine On
RewriteMap upper2lower int:tolower
RewriteRule ^/(.+)\.html$ /${upper2lower:$1}.htm [QSA,NC,R=301]
重定向到html
。
htm
.htaccess可以使用更多选项:
3)为每个这样的页面创建重写规则 - 效率很低,需要不断更新(每个新页面都有新规则) - 案例无关紧要:
RewriteRule ^(.+)\.html$ /$1.htm [QSA,NC,R=301]
4)进行两步重定向:1)将html重定向到一些特殊的php文件,该文件在执行时重定向到适当的低级URL。可行..但丑陋(加上2个重定向)。
如果你不能做#1,那么坚持使用#2并确保你在RewriteRule ^MYPAGES/some-Page.html$ /mypages/some-page.htm [QSA,NC,R=301]
中使用<link rel="canonical" href="PROPER_URL_GOES_HERE"/>
。
http://www.google.com/support/webmasters/bin/answer.py?answer=139394