我将我的网站移动到一个带有新CMS的新服务器,所以我不得不制作很多301重定向。 '正常' 301重定向无法识别我的旧网址的网址路径,所以我尝试制作RewriteRules,这就是现在的样子:
Options -MultiViews
RewriteEngine On
RewriteBase /
RewriteRule ^Category http://www.example.com/category [R=301,L]
RewriteRule ^Category/Subcategory http://www.example.com/category-subcategory [R=301,L]
第一个RewriteRule可以工作,但只要旧URL(第二个示例)中有第二个路径,重定向就会指向主要的cateagy,而不是子类别。所以它基本上忽略了网址路径......
答案 0 :(得分:0)
尝试颠倒您的规则,或在第一个规则的末尾添加$:
RewriteRule ^Category$ http://www.example.com/category [R=301,L]
RewriteRule ^Category/Subcategory http://www.example.com/category-subcategory [R=301,L]
说明:Category / Subcategory也匹配第一个规则,并且因为你在第一个规则中使用了L标志,所以Apache只会使用这个第一个规则而不用再费力了。
答案 1 :(得分:0)
对于通用解决方案,请引用apache rewrite guide:
将Homedirs移至不同的Web服务器描述:
许多网站管理员要求解决以下问题:
他们希望将网络服务器上的所有homedir重定向到另一个网络服务器。在建立一个新的网络服务器时,他们通常需要这样的东西,随着时间的推移它将取代旧的网络服
解决方案:
使用mod_rewrite解决方案很简单。在旧的网络服务器上我们只是 将所有/ ~user / anypath网址重定向到http://example.com/~user/anypath。
上的RewriteEngine
RewriteRule ^ /〜(。+)http://example.com/~ $ 1 [R,L]
在您的情况下,网址结构已更改,因此ôkio的建议可行。