.htaccess 重写URL以重定向并删除前导零
我有两个博客在两个不同的领域,我整合到一个网站上。我对服务器管理员不太熟悉,但我99%确信我想在bluehost上做的事情是可能的(因为它们允许.htaccess)并使用mod_rewrite(或类似工具) 目前,我有.htaccess 重写URL以重定向并删除前导零,.htaccess,mod-rewrite,redirect,url-rewriting,bluehost,.htaccess,Mod Rewrite,Redirect,Url Rewriting,Bluehost,我有两个博客在两个不同的领域,我整合到一个网站上。我对服务器管理员不太熟悉,但我99%确信我想在bluehost上做的事情是可能的(因为它们允许.htaccess)并使用mod_rewrite(或类似工具) 目前,我有blog1.com和blog2.com,发布的URL看起来像blog1.com/001和blog2.com/030。我想要的是,任何输入其中一个URL的人都可以重定向到example.com/blog1/1和example.com/blog2/30 这意味着我需要: 将整个域重定向
blog1.com
和blog2.com
,发布的URL看起来像blog1.com/001
和blog2.com/030
。我想要的是,任何输入其中一个URL的人都可以重定向到example.com/blog1/1
和example.com/blog2/30
这意味着我需要:
blog1.com/001
和example.com/blog1/001
重定向到example.com/blog1/1
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]]
您可以在
blog1
和blog2
域的DOCUMENT\u ROOT/.htaccess
文件中使用此代码:
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
RewriteCond
将匹配所有前导零,^0*([1-9]+)
$1
example.com/a/030
没有像预期的那样重定向到example.com/a/30
。这需要是它自己的条件/规则吗?但什么是/a/
目录。此规则从RewriteCond
中获取主机名部分,并且在新请求中没有a
。很抱歉,我做了这样的事情,您混淆了示例,混淆了试图帮助您的人。我的意思是:example.com/blog1/030
不会像预期的那样重定向到example.com/blog1/30
。这需要它自己的条件/规则吗。永远不要在评论中发布代码,没有人可以阅读它。2.不要在那个网站上测试,它是不可靠的。清楚地告诉哪个URL它不工作