重写 URL 以重定向并删除前导零

Rewrite URLs to redirect and drop leading zero

我在两个不同的域上有两个博客,我正在将它们合并到一个站点上。我不太熟悉服务器管理员,但我 99% 确定我想做的事情在 bluehost 上是可能的(因为他们允许 .htaccess)并使用 mod_rewrite(或类似的。)

目前我有 blog1.comblog2.com 和 post url 看起来像 blog1.com/001blog2.com/030。我想要的是任何输入其中一个 URL 的人都将被重定向到 example.com/blog1/1example.com/blog2/30

这意味着我需要:

  1. 将整个域重定向到我的新域上的一个文件夹
  2. 将带前导零的 URL 的命中重定向到不带前导零的 URL
  3. 这可能意味着重定向 blog1.com/001 example.com/blog1/001example.com/blog1/1

已更新

http://htaccess.madewithlove.be 满足第一个和第二个条件,但规则未触发。

第 3 次完全崩溃并且 returns 怪异:http://example.com/blog1/030log1/030

RewriteEngine On

# redirect blog1.com/030 => example.com/blog1/30
RewriteCond %{HTTP_HOST} ^(?:www\.)?(blog1|blog2)\. [NC]
RewriteRule ^0*([1-9]+)/?$ http://example.com/%1/ [R=301,L]

# redirect example.com/blog1/030 => example.com/blog1/30
RewriteCond %{HTTP_HOST} ^(?:www\.)?example\.com$ [NC]
RewriteRule ^(blog1|blog2)/0*([1-9]+)/?$ // [NC,R=301,L]

# Never use www
RewriteCond %{HTTP_HOST} ^www.(([a-z0-9_]+.)?example.com)$ [NC]
RewriteRule .? http://%1%{REQUEST_URI} [R=301,L]]

您可以在 blog1blog2 域的 DOCUMENT_ROOT/.htaccess 文件中使用此代码:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(?:www\.)?(blog1|blog2)\. [NC]
RewriteRule ^0*([1-9]+)/?$ http://example.com/%1/ [R=302,L]

# rule2 for example.com/blog1/030 => example.com/blog1/30
RewriteCond %{HTTP_HOST} ^(?:www\.)?example\.com$ [NC]
RewriteRule ^(blog1|blog2)/0+([1-9]+)/?$ // [NC,R=302,L]
  • %1RewriteCond
  • blog1blog2 的反向引用
  • ^0*([1-9]+) 将匹配所有前导零,只留下
  • 中的非零数字