重写 URL 以重定向并删除前导零
Rewrite URLs to redirect and drop leading zero
我在两个不同的域上有两个博客,我正在将它们合并到一个站点上。我不太熟悉服务器管理员,但我 99% 确定我想做的事情在 bluehost 上是可能的(因为他们允许 .htaccess)并使用 mod_rewrite(或类似的。)
目前我有 blog1.com
和 blog2.com
和 post url 看起来像 blog1.com/001
和 blog2.com/030
。我想要的是任何输入其中一个 URL 的人都将被重定向到 example.com/blog1/1
和 example.com/blog2/30
这意味着我需要:
- 将整个域重定向到我的新域上的一个文件夹
- 将带前导零的 URL 的命中重定向到不带前导零的 URL
- 这可能意味着重定向
blog1.com/001
和 example.com/blog1/001
到 example.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]]
您可以在 blog1
和 blog2
域的 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]
%1
是 RewriteCond
中 blog1
或 blog2
的反向引用
^0*([1-9]+)
将匹配所有前导零,只留下
中的非零数字
我在两个不同的域上有两个博客,我正在将它们合并到一个站点上。我不太熟悉服务器管理员,但我 99% 确定我想做的事情在 bluehost 上是可能的(因为他们允许 .htaccess)并使用 mod_rewrite(或类似的。)
目前我有 blog1.com
和 blog2.com
和 post url 看起来像 blog1.com/001
和 blog2.com/030
。我想要的是任何输入其中一个 URL 的人都将被重定向到 example.com/blog1/1
和 example.com/blog2/30
这意味着我需要:
- 将整个域重定向到我的新域上的一个文件夹
- 将带前导零的 URL 的命中重定向到不带前导零的 URL
- 这可能意味着重定向
blog1.com/001
和example.com/blog1/001
到example.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]]
您可以在 blog1
和 blog2
域的 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]
%1
是RewriteCond
中 ^0*([1-9]+)
将匹配所有前导零,只留下 中的非零数字
blog1
或 blog2
的反向引用