不能与.htacess重定向规则重定向

问题描述 投票:0回答:1

可以向我解释为什么该规则不起作用。

Options +FollowSymLinks RewriteEngine on RewriteBase / RewriteRule \/get-info\/plugin\/(.*) \/repositories\/get-info.php?plugin=$1
我想要当有人访问
www.myawesomedomain.com/get-info/plugin/test

go to to

www.myawesomedomain.com/repositories/get-info.php?plugin =test

您的当前
regex apache .htaccess
1个回答
0
投票
规则无法正常工作,因为:

slashes的不正确逃脱
您无需在
/

中逃脱斜线(
    RewriteRule
  1. )。 Apache作为普通字符处理它们。


    训练起始锚(

    ^

    .htaccess
  2. 中,与之匹配的URL路径永远不会从领先的斜线开始。您的规则应该从
  3. ^

    开始从一开始就正确匹配。

    召集fix
    尝试此更正的规则:
    Options +FollowSymLinks RewriteEngine on RewriteBase /  RewriteRule ^get-info/plugin/(.*)$ repositories/get-info.php?plugin=$1 [L,QSA] 

  4. 解释:


    ^get-info/plugin/(.*)$

    →匹配

    /get-info/plugin/anything
    正确。

      repositories/get-info.php?plugin=$1
    • →重定向到正确的脚本。

      [L,QSA]

    • L(最后)
      →如果此匹配匹配,则停止处理进一步的规则。

    • QSA(查询字符串附加)

      →确保不会丢失现有的查询参数。
      

      • this应该正确地将www.myawesomedomain.com/get-info/plugin/test

        重写为
      • www.myawesomedomain.com/repositories/get-info.php?plugin=test
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.