【问题标题】:Mod-rewrite rule which just gets the part of the URL after the =Mod-rewrite 规则,它只获取 = 之后的 URL 部分
【发布时间】:2020-06-16 02:51:49
【问题描述】:

我目前正在尝试重定向此 URL

http://dev.example.org/active/researchers/contact.php?IDENT=12345

http://portaldev.example.org/users/ident/12345

在 htaccess 中。

但是,我只能重定向到

http://portaldev.example.org/users/ident/IDENT=12345

因为我找不到摆脱IDENT= 的方法。我该怎么做?

我的htaccess中的重写条件是:

RewriteCond %{REQUEST_URI}  ^/active/researchers/contact\.php$ 
RewriteCond %{QUERY_STRING} ^IDENT=([0-9]*)$
RewriteRule ^(.*)$ http://portaldev.example.org/users/ident/$2 [R=302,NC,L]

【问题讨论】:

    标签: .htaccess url redirect mod-rewrite


    【解决方案1】:

    这可能就是你要找的:

    RewriteEngine on
    RewriteCond %{QUERY_STRING} (?:^|&)IDENT=(\d+)(?:&|$)
    RewriteRule ^/?active/researchers/contact\.php$  http://portaldev.example.org/users/ident/%1 [R=302,QSD,NC]
    

    最好先从 302 临时重定向开始,稍后再将其更改为 301 永久重定向,前提是您确定一切都已正确设置。这样可以防止在尝试时出现缓存问题...

    此实现同样适用于 http 服务器主机配置或分布式配置文件(“.htaccess”文件)。显然重写模块需要在http服务器内部加载并在http主机中启用。如果您使用分布式配置文件,您需要注意它的解释在主机配置中完全启用,并且它位于主机的 DOCUMENT_ROOT 文件夹中。

    一般来说:您应该始终喜欢将此类规则放在 http 服务器主机配置中,而不是使用分布式配置文件(“.htaccess”)。这些分布式配置文件增加了复杂性,通常是意外行为的原因,难以调试并且它们确实减慢了 http 服务器的速度。它们仅在您无法访问真正的 http 服务器主机配置(阅读:非常便宜的服务提供商)或坚持编写自己的规则的应用程序(这是一个明显的安全噩梦)的情况下作为最后一个选项提供。

    【讨论】:

    • 感谢您的建议,但您的代码对我不起作用,因为它根本无法重定向。我正在使用一个站点来测试名为 htaccess.madewithlove.be 的代码,它说条件不满足,但不管我在我的站点上尝试过但没有重定向。
    • 我不明白你的意思。如果我测试上述规则集,则在使用您建议的测试站点时它可以根据需要为我工作。我刚刚添加的唯一内容:QSD 标志,用于在重写过程中删除原始参数。但可以肯定的是,条件 确实 匹配并且重定向 is 执行。也许您在复制上述规则集时犯了错误?
    • 对不起,我的错误似乎确实有效,不知道出了什么问题,但我还是找到了答案,感谢您的帮助
    【解决方案2】:

    为需要帮助的其他人找到我的问题的答案:

    RewriteCond %{REQUEST_URI}  ^/active/researchers/contact\.php$ 
    RewriteCond %{QUERY_STRING} ^IDENT=(.*)
    RewriteRule (.*)  http://portaldev.cepr.org/users/ident/%1? [R=301,L]
    

    我认为主要是 ?在重写规则的末尾,但除非我放入第一个 RewriteCond 来请求 uri 并在重写规则中使用 (.*),否则它也不起作用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-20
      • 2013-01-13
      • 1970-01-01
      • 2012-10-30
      • 2015-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多