如何使用Apache重定向.htaccess?

时间:2012-04-07 09:55:11

标签: .htaccess redirect url-rewriting

请帮助我使用.htaccess重定向,如下所示。

http://info.domainname.com/blog/?Tag=somedynamictag

http://domainname.com/tag/somedynamictag

谢谢!

1 个答案:

答案 0 :(得分:0)

首先,我不明白将http://info.domainname.com/blog/?Tag=somedynamictag重写为http://domainname.com/tag/somedynamictag的目的,当它必须反过来时。人们会重写网址以清除它们(即删除?&=等字符,但您要添加所有这些内容并使网址变得繁琐。

我认为你没有正确理解URL重写的概念。让我解释一下。

在您的网站上访问任何网址时,会重写USER键入或点击的网址(在您的情况下为http://domainname.com/tag/somedynamictag)。但是你的问题告诉我你反思。您的理解是,访问者点击http://info.domainname.com/blog/?Tag=somedynamictag并将重写为http://domainname.com/tag/somedynamictag这是错误!! 如果您以这种方式设置您的网站,http://domain.com/处的每个网址都必须作为单独的文件或目录存在,您似乎正在开发一个像您这样的动态网站预计不会有。所以我假设你已经明白你有错误的问题,或者你误解了URL重写的概念。以下是将http://domainname.com/tag/somedynamictag重定向到http://info.domainname.com/blog/?Tag=somedynamictag的.htaccess代码。

RewriteEngine On

RewriteCond %{HTTP_HOST} domainname.com
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Za-z0-9]+)\/(.*)$ http://info.domainname.com/blog/?$1=$2 [L,R=301]

如果您认为您已正确输入问题并理解正确的网址重写并确定您要做的是正确的,那么这里是htaccess代码(如果您想将http://info.domainname.com/blog/?Tag=somedynamictag重定向到{{3 }})。

RewriteEngine On

RewriteCond %{HTTP_HOST} info.domainname.com
RewriteRule ^blog\/\?([A-Za-z0-9]+)=(.*)$ http://domainname.com/$1/$2 [L,R=301]

如果这不起作用,请在http://domainname.com/tag/somedynamictag的index.php中输入以下代码:

<?php
header("HTTP/1.1 301 moved permanently");
header("Location:http://domainname.com/blog/tag/".$_GET['Tag']);
?>

谢谢你提出这个问题。在回答这个问题时,我学到了很多东西。

希望能回答你的问题,

...和平