【问题标题】:htaccess transparent redirect becomes a 301 insteadhtaccess 透明重定向改为 301
【发布时间】:2014-10-21 09:01:29
【问题描述】:

我正在尝试将http://example.com/a/b?passcode=hello&go=rate 透明重定向到http://example.com/a/b/q?passcode=hello

'a' 始终不变,而'b' 不断变化

这是我在根文件夹中使用的 .htaccess:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{QUERY_STRING} passcode=(.*)&go=rate
RewriteRule ^a(.*)?$ /a$1/q?passcode=%1 [L]

这没有按预期工作 - 当我运行 http://example.com/a/b?passcode=hello&go=rate 时,我得到 301 Moved Permanently@

如果我继续将 RewriteRule 更改为

RewriteRule ^a(.*)?$ /a$1/q?passcode=%1 [L,R]

它按预期工作并执行 301 重定向到 http://example.com/a/b/q?passcode=hello

但是,如何使其与透明重定向一起使用? 我是新手,所以欢迎所有 cmets!

【问题讨论】:

    标签: php apache .htaccess mod-rewrite redirect


    【解决方案1】:

    您可以在根 .htaccess 中使用此规则:

    Options +FollowSymLinks
    RewriteEngine on
    
    RewriteCond %{QUERY_STRING} (passcode=[^&]+)&go=rate [NC]
    RewriteRule ^(a/[^/]+)/?$ /$1/q?%1 [L,NC]
    

    确认/a/ 文件夹中没有 .htaccess。

    【讨论】:

    • 仍然有同样的问题。在我的网络中,它显示为 301 Moved Permanently 并且它不指向 example.com/a/b/q?passcode=hello 我检查过它是唯一驻留在服务器上的 .htaccess 文件
    • 您在浏览器中输入的网址是什么?在不同的浏览器中测试它以避免旧的缓存。另外,如果您有其他规则,请在此处发布。
    • 这是我唯一的规则。我之前输入了example.com/a/b?passcode=hello&go=rate。我刚刚尝试使用example.com/a/b/?passcode=hello&go=rate [注意正斜杠] 并永久301 重定向到example.com/a/b/q?passcode=hello。目前使用您的 htaccess 规则并禁用缓存
    • 1.显示的规则中没有 301 重定向。 2. 如果您输入http://example.com/a/b/?passcode=hello&go=rate 后带有斜杠,则目录也不会添加斜杠。
    • 是的,很可能因为其他一些规则而被 301 重定向。我知道服务器上没有 .htaccess else 。可能是因为 httpd.conf 中的某些内容吗?谢谢
    猜你喜欢
    • 2011-05-01
    • 2011-01-03
    • 2012-03-10
    • 2021-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多