RewriteRule重定向无法工作的路径



我把我的网站移到了一个带有新CMS的新服务器上,所以我不得不进行大量301重定向正常的301重定向无法识别我旧url的url路径,所以我尝试制作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中有第二个路径(第二个示例),重定向就会指向主类别,而不是子类别。所以它基本上忽略了url路径。。。

尝试反转您的规则,或者在第一个规则的末尾添加一个$:

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将只使用第一条规则,而不必进一步查看。

对于通用解决方案,引用apache重写指南:

将Homedirs移动到不同的Web服务器描述:

许多网站管理员要求解决以下情况:

他们只想将一台网络服务器上的所有homedirs重定向到另一台服务器。他们在建立一个新的网络服务器时通常需要这样的东西,随着时间的推移,这个服务器将取代旧的。

解决方案:

mod_rewrite的解决方案微不足道。在旧的网络服务器上,我们只是将所有/~user/anypath URL重定向到http://example.com/~user/anypath。

上的重写引擎

重写规则^/~(.+)http://example.com/~1美元[R,L]

在你的情况下,URL结构已经改变,所以ôkio的建议会起作用。

最新更新