【问题标题】:htaccess redirect not working for long urlhtaccess 重定向不适用于长网址
【发布时间】:2016-04-08 20:39:15
【问题描述】:

如何重定向以下长链接:

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

【问题讨论】:

  • 如果您不向我们展示现有的重定向规则,您希望我们如何帮助您?
  • 您能否使用问题下方的edit 按钮添加更多详细信息和信息?这样事情就保持可读性......谢谢!
  • 另外请解释一下您所说的“不起作用”确切是什么意思。这实际上是什么意思?不会发生重写吗?不知何故重写是错误的?你有错误吗?还是空白页?宇宙会内爆吗?你看我们不能越过你的肩膀。你必须告诉我们......
  • 它不会被重定向。
  • 好的,谢谢。这不起作用的原因是您以错误的方式使用该语句。这不是它的工作方式。请查看解释您使用的工具的文档:httpd.apache.org/docs/current/mod/mod_alias.html#redirect 如果您真的想要完全按照您在问题中发布的重定向,那么您不能使用 Alias 模块提供的 Redirect 命令。您必须使用由 Redirect 模块实现的更复杂的 RewriteCond 和 RewriteRule 组合。

标签: .htaccess redirect


【解决方案1】:

正如上面在 cmets 中所说,我怀疑您的逻辑存在故障,实际上您希望重定向以相反的方式工作。从长 URL 重定向到搜索引擎友好的 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。这是通常的情况。

如果您真的想要将该短 URL 重定向到长版本,那么您不能使用 Redirect 规则来执行此操作。例如,如果您不小心发送了那个长 URL 并为短版本设置了有效的重定向设置,则可能会出现这种情况。不幸的是,您没有在您的问题或 cmets 中对此做出任何解释,所以我只能在这里猜测。

您必须使用更灵活的重写模块并结合使用RewriteCond 和RewriteRule。这允许“删除”请求 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 样式文件中都可以工作。如果您有访问权限,您总是应该首选第一个选项。

如上所述,我只能猜测你提供的稀疏信息。我从许多请求参数中挑选了两个,因为它们似乎是最适合作为不同标识符的参数。但是你可能需要调整一些东西。请注意,默认情况下 RewriteConds 由逻辑 AND 组合,因此它们两者都必须解决一些真实的问题。

有关这些内容的更详细信息,我想再次向您指出这些模块的官方文档。该文档非常精确,写得很好,并带有很好的示例。我总是更喜欢那里的信息,而不是你在互联网某处找到的 sn-ps 或问题的部分答案......

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-29
    相关资源
    最近更新 更多