【问题标题】:.htaccess rewrite rule dont work when there is query string in url当 url 中有查询字符串时,.htaccess 重写规则不起作用
【发布时间】:2018-07-26 03:19:16
【问题描述】:

我在配置重写规则时遇到问题。我需要将 mysite.com/blog/start 重定向到 anothersite.com/start ,重定向工作正常,问题是如果在来源网址:

  1. mysite.com/blog/start -> 到 anothersite.com/start(工作正常)
  2. mysite.com/blog/start/ -> 到 anothersite.com/start(工作正常)
  3. mysite.com/blog/start/?param=123 -> 到 anothersite.com/start(不工作)

这是 .htaccess 文件中的重写部分:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    #redirects
    RewriteBase /
    RewriteRule ^start$ http://anothersite.com/start [L]
    RewriteRule ^blog/start$ http://anothersite.com/start [L,QSA]
    ...
    ...

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

</IfModule>

【问题讨论】:

    标签: apache redirect mod-rewrite server


    【解决方案1】:

    尝试使用%{QUERY_STRING} 代替QSA 标志

    RewriteRule ^blog/start$ http://anothersite.com/start%{QUERY_STRING} [L]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-18
      • 2019-10-31
      • 1970-01-01
      • 2015-07-05
      • 1970-01-01
      • 1970-01-01
      • 2021-08-24
      • 1970-01-01
      相关资源
      最近更新 更多