【问题标题】:How to redirect using .htaccess using Apache?如何使用 .htaccess 使用 Apache 进行重定向?
【发布时间】:2012-04-07 09:55:11
【问题描述】:

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

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

http://domainname.com/tag/somedynamictag

谢谢!

【问题讨论】:

    标签: .htaccess redirect url-rewriting


    【解决方案1】:

    首先,我不明白将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']);
    ?>
    

    感谢您提出这个问题。在回答的过程中,我学到了很多东西。

    希望能回答你的问题,

    和平...

    【讨论】:

    • 非常感谢您的帮助。添加您的代码后,我收到内部服务器错误。 .htaccess 文件如下 # BEGIN WordPress RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule 。 /index.php [L] RewriteCond %{HTTP_HOST} info.domainname.com RewriteRule ^blog\/\?([A-Za-z0-9]+)\=(.*)$ domainname.com/$1/$2 [L,R =301] #END WordPress 谢谢!
    • 你启用了 mod_rewrite 吗?
    猜你喜欢
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2018-09-05
    • 2011-08-29
    • 2017-04-15
    相关资源
    最近更新 更多