我正在将旧服务器移至 archive.example.com,新服务器将继续在 example.com 上运行,同时所有 www URL 都被规范化为 example.com 或 archive.example.com,并且应该处理尾部斜杠问题.
旧服务器有许多目录,因此所有内容都需要重定向到 archive.example.com,同时保留路径信息,除了将在新服务器上运行的少数目录。我不想重定向并将为新服务器保留的目录是:
/ (根) /静止的 /博客 /关于
例如:
示例.com => 示例.com www.example.com => example.com www.example.com/ => example.com/ example.com/blog => example.com/blog www.example.com/blog => example.com/blog www.example.com/blog/ => example.com/blog/
所有其他目录应重定向到 archive.example.com。例如:
example.com/docs => archive.example.com/docs www.example.com/docs => archive.example.com/docs www.example.com/docs/ => archive.example.com/docs/ example.com/library/images => archive.example.com/library/images www.example.com/library/images => archive.example.com/library/images www.example.com/library/images/ => archive.example.com/library/images/
这是我的 httpd.conf 文件中的内容:
ServerName example.com
ServerAlias www.example.com
UseCanonicalName On
# canonicalize www.example.com to example.com
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ $1 [R=301]
# redirect everything to archive.example.com except for a few directories
RewriteCond %{REQUEST_URI} !^(/|/static|/blog|/about)$
RewriteRule ^/(.*)$ http://archive.example.com/$1 [NC,R=301,L]
这是正确的和/或有更精确的方法吗?