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

时间:2015-01-22 16:00:22

标签: .htaccess mod-rewrite redirect url-rewriting bluehost

我在两个不同的域名上有两个博客,我正在整合到一个网站上。我对服务器管理员不太熟悉,但我99%确定我想要做的是在bluehost上(因为它们允许.htaccess)和使用mod_rewrite(或类似的)。

目前我有blog1.comblog2.com,帖子网址看起来像blog1.com/001blog2.com/030。我希望输入其中一个网址的用户重定向到example.com/blog1/1example.com/blog2/30

这意味着我需要:

  1. 将整个域重定向到我的新域中的文件夹
  2. 将点击重定向到带有前导零到不带前导零的网址的网址
  3. 这可能意味着将blog1.com/001 example.com/blog1/001重定向到example.com/blog1/1
  4. 已更新

    http://htaccess.madewithlove.be第一&遇到了第二个条件,但规则并未触发。

    第3次完全休息并返回怪异: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/$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]+)/?$ /$1/$2 [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]]
    

1 个答案:

答案 0 :(得分:2)

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

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(?:www\.)?(blog1|blog2)\. [NC]
RewriteRule ^0*([1-9]+)/?$ http://example.com/%1/$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]+)/?$ /$1/$2 [NC,R=302,L]
  • %1是对blog1blog2RewriteCond的反对引用
  • ^0*([1-9]+)将匹配所有前导零,只留下$1中的非零数字