请帮助我使用 .htaccess 进行重定向,如下所示。
http://info.domainname.com/blog/?Tag=somedynamictag
至
http://domainname.com/tag/somedynamictag
谢谢!
请帮助我使用 .htaccess 进行重定向,如下所示。
http://info.domainname.com/blog/?Tag=somedynamictag
至
http://domainname.com/tag/somedynamictag
谢谢!
首先,我不明白将http://info.domainname.com/blog/?Tag=somedynamictag重写为http://domainname.com/tag/somedynamictag的目的,因为它必须反过来。人们重写 URL 以清理它们(即删除诸如?
、&
、=
等字符),但您添加了所有这些并使 URL 变得繁琐。
我认为您没有正确理解 URL 重写的概念。让我稍微解释一下。
在您的网站上访问任何 URL 时,用户键入或单击的 URL(在您的情况下为http://domainname.com/tag/somedynamictag)将被重写。但是你的问题告诉我你的想法是相反的。你的理解是访问者点击 http://info.domainname.com/blog/?Tag=somedynamictag会被改写为http://domainname.com/tag/somedynamictag。这是错误的!如果您以这种方式设置您的网站,那么http://domain.com/上的每个 URL必须作为一个单独的文件或目录存在,而您似乎正在开发的动态网站预计不会有。所以我假设你已经理解你要么错误地提出了问题,要么你误解了 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]
如果您认为您已经正确输入了问题并正确理解了 url-rewriting 并且确定您尝试做的事情是正确的,那么这里是 htaccess 代码(如果您想重定向http://info.domainname.com/blog/ ?tag=somedynamictag到http://domainname.com/tag/somedynamictag)。
RewriteEngine On
RewriteCond %{HTTP_HOST} info.domainname.com
RewriteRule ^blog\/\?([A-Za-z0-9]+)=(.*)$ http://domainname.com/$1/$2 [L,R=301]
如果这不起作用,请在http://info.domainname.com/blog/的 index.php 中放置以下代码:
<?php
header("HTTP/1.1 301 moved permanently");
header("Location:http://domainname.com/blog/tag/".$_GET['Tag']);
?>
感谢您提出这个问题。在回答的过程中,我学到了很多东西。
希望这能回答你的问题,
和平...