htaccess重定向不适用于长网址

时间:2016-04-08 20:39:15

标签: .htaccess redirect

如何重定向以下长链接:

http://www.vbpmonitor.com/index.php?option=com_content&view=article&id=24&utm_source=MagnetMail&utm_medium=email&utm_term=asmith@panaceainc.com&utm_content=EVVWP040716&utm_campaign=White%20Paper%3A%20Optimizing%20VBM%20Quality%20Tiering%20for%20Physicians

http://www.vbpmonitor.com/optimizing-vbm-quality-tiering-for-physicians

Redirect 301 /index.php?option=com_content&view=article&id=24&utm_source=MagnetMail&utm_medium=email&utm_term=asmith@panaceainc.com&utm_content=EVVWP040716&utm_campaign=White%20Paper%3A%20Optimizing%20VBM%20Quality%20Tiering%20for%20Physicians http://www.vbpmonitor.com/optimizing-vbm-quality-tiering-for-physicians

1 个答案:

答案 0 :(得分:1)

正如上面评论中所说的那样,我怀疑你的逻辑在这里有一个小故障,实际上你想要重定向到另一种方式工作。从长整型重定向到搜索引擎友好的URL根本没有任何意义。所以:

使用Redirect规则可以尝试改为:

Redirect 301 /optimizing-vbm-quality-tiering-for-physicians /index.php?option=com_content&view=article&id=24&utm_source=MagnetMail&utm_medium=email&utm_term=asmith@panaceainc.com&utm_content=EVVWP040716&utm_campaign=White%20Paper%3A%20Optimizing%20VBM%20Quality%20Tiering%20for%20Physicians

这会将传入的请求重定向到实际存在的长URL的短URL。这是通常的情况。

但是,如果您确实想要将该短网址重定向到长版本,那么您无法使用Redirect规则执行此操作。例如,如果您不小心发送了那个长URL并且为短版本设置了有效的重定向设置,则可能就是这种情况。不幸的是,你没有在你的问题或评论中解释任何相关内容,因此我只能猜测

您必须使用更灵活的重写模块,并使用RewriteCondRewriteRule的组合。这允许"切断"请求URL的特定模式以及重新设计"重写后请求应该如何。

这是一个简单的示例,它应用两个条件将文件index.php的请求重写为长URL:

RewriteEngine on
RewriteCond %{QUERY_STRING} view=article 
RewriteCond %{QUERY_STRING} id=24
RewriteRule ^/?index\.php$ /optimizing-vbm-quality-tiering-for-physicians [L,R=301]

注意:此版本既可以在http服务器主机配置中使用,也可以在那些.htaccess样式文件中使用。如果您有权访问,总是应该选择第一个选项。

如上所述,我只能使用您提供的稀疏信息猜测。我从许多请求参数中选择了两个,因为这些参数似乎是最适合作为不同标识符的参数。但你可能不得不调整一些事情。请注意,默认RewriteCond由逻辑AND组合,因此两者都必须解决问题。

有关这些内容的更多详细信息,我想再次向您指出这些模块的官方文档。文档非常精确,编写得很好,附带了很好的例子。我总是更喜欢那里的信息,你可以在互联网上的某个地方找到片段或者问题的部分答案......

  1. http://httpd.apache.org/docs/current/mod/mod_alias.html#redirect
  2. http://httpd.apache.org/docs/current/mod/mod_rewrite.html