【问题标题】:Need help with a RewriteRule - Apache需要 RewriteRule 的帮助 - Apache
【发布时间】:2010-06-04 07:41:30
【问题描述】:

这是我想做的:

http://www.mysite.com/      >    http://www.mysite.com/index.php
http://www.mysite.com/asd   >    http://www.mysite.com/index.php?page=$1

asd 将是附加到 index.php 的 $page 变量的页面的名称。

我当前的重写规则成功重定向了请求的页面,但未能加载默认的 index.php 页面。

RewriteEngine On
RewriteRule ^([\w]*)$ /index.php?page=$1 [L]

我该如何解决这个问题? :/

【问题讨论】:

    标签: regex apache mod-rewrite


    【解决方案1】:

    您需要有一个仅匹配 /: 的规则

    RewriteRule ^/$ /index.php [L]
    

    然后是你的另一个:

    RewriteRule ^/([\w]+)$ /index.php?page=$1 [L]
    

    【讨论】:

    • [\w] 不是多余的吗?我觉得\w 就够了。
    • 我会说这是多余的。我发现 RewriteRules 往往无法以意想不到的方式工作,所以我把它留在了。
    【解决方案2】:

    对于我来说,我只是将整个路径传递到索引页面。

    RewriteRule ^.*$ /index.php?page=$0 [L,QSA]
    

    然后使用list() 和explode() 将其分块。

    list( $param1, $param2, $param3 ) = explode( "/", $_GET['page'] );
    

    否则,您将需要两条规则。

    或者使用相同的规则并且在 / 页面上有一个空的 ?page= 参数。

    【讨论】:

      猜你喜欢
      • 2011-05-22
      • 1970-01-01
      • 1970-01-01
      • 2015-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-23
      • 1970-01-01
      相关资源
      最近更新 更多