【发布时间】:2012-04-07 09:55:11
【问题描述】:
请帮助我使用 .htaccess 进行重定向,如下所示。
http://info.domainname.com/blog/?Tag=somedynamictag
到
http://domainname.com/tag/somedynamictag
谢谢!
【问题讨论】:
标签: .htaccess redirect url-rewriting
请帮助我使用 .htaccess 进行重定向,如下所示。
http://info.domainname.com/blog/?Tag=somedynamictag
到
http://domainname.com/tag/somedynamictag
谢谢!
【问题讨论】:
标签: .htaccess redirect url-rewriting
首先,我不明白将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 重写并且确定您尝试做的事情是正确的,那么这里是 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']);
?>
感谢您提出这个问题。在回答的过程中,我学到了很多东西。
希望能回答你的问题,
和平...
【讨论】: