【问题标题】:Redirect work only first time仅第一次重定向工作
【发布时间】:2017-03-08 08:17:34
【问题描述】:

尝试从此网址进行重定向:

http://www.mywebsite.it/it/component/fss/?view=admin_support

到这个网址:

http://www.mywebsite.it/it/index.php/component/fss/?view=admin_support

我用这段代码创建了一个 .htaccess 文件:

RedirectMatch 301 ^/it/component/fss/?$ /it/index.php/component/fss/

如果我第一次点击 url,一切正常。该网址以 /it/index.php/component 开头,但如果我点击页面上的另一个链接(如 http://www.mywebsite.it/it/component/fss/?view=list),我将重定向到网站主页。

但如果我复制地址 (http://www.mywebsite.it/it/component/fss/?view=admin_support) 并将其粘贴到另一个选项卡中,则重定向工作。

我该如何解决这个问题?

谢谢

【问题讨论】:

    标签: .htaccess redirect


    【解决方案1】:

    使用mod_rewrite 规则而不是RedirectMatch 来匹配查询字符串:

    RewriteEngine On
    
    RewriteCond %{REQUEST_METHOD} !POST
    RewriteCond %{THE_REQUEST} \s/+it/(component/fss/?)\?view=[^&\s]+[&\s] [NC]
    RewriteRule ^ /it/index.php/%1 [L,R=301]
    

    确保在测试此更改之前清除浏览器缓存。

    【讨论】:

    • 我已经尝试过您的代码,但结果与 RedirectMatch 相同
    • 在我的 .htaccess 中只有你的规则。我尝试使用带有私人窗口的 chrome 并清除我所有的 cookie,如果我继续使用 url 可以让?view=admin_support 重定向到 index.php,但如果我进入另一个 ulr,例如可以使用?view=test 重定向不工作。我已尝试从您的规则中删除视图,但都停止工作。我怎样才能让所有页面有it/component/fss/ 重定向到/it/index.php/component/fss?我的 .htaccess 在第一个 forlder ( httpdocs ) 上。谢谢@anubhava
    • 是的。只有具有/it/component/fss//it/index.php/component/fss 的页面。
    • 我收到错误 500。网址从 http://www.mywebsite.it/it/component/fss/?view=admin 更改为 http://www.mywebsite.it/it/index.php/component/fss/?view=?view=admin%20HTTP/1.0。感谢您的帮助!
    【解决方案2】:

    尝试使用私人窗口:

    如果有效,您只需清除浏览器缓存即可。

    【讨论】:

      猜你喜欢
      • 2012-04-29
      • 2016-02-17
      • 2011-09-06
      • 2017-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-21
      • 2021-10-17
      相关资源
      最近更新 更多