【问题标题】:.htaccess: how to only rewrite .php URL?.htaccess:如何只重写 .php URL?
【发布时间】:2009-03-29 07:26:20
【问题描述】:

我的重写条件如下:

http://www.sitename.com/index.php?n=text 重定向到 http://www.sitename.com/pages/text

并且页面可以正确呈现,但是存在一个问题,即重定向 URL 的参数也会添加到 URL。所以实际上在地址栏中它看起来像-

http://www.sitename.com/pages/text?n=text

有人可以帮我解决这个问题吗? htaccess 代码如下。

RewriteCond %{QUERY_STRING} ^n=(.*)$
RewriteRule index.php http://www.sitename.com/pages/%1 [r=301,nc]

【问题讨论】:

  • 好吧,我咬一口:你为什么要从 index.php?n=text 重定向到 /pages/text?我见过人们用另一种方式来获取“漂亮”的 URL,但这有什么用?

标签: .htaccess mod-rewrite


【解决方案1】:

您可能想捕捉“index.php.*”。否则 mod_rewrite 只会用新的 URL 替换 URL“index.php?n=text”的“index.php”部分。

【讨论】:

    【解决方案2】:

    胡思乱想,

    根据您的建议,我将其重构如下:

    RewriteCond %{QUERY_STRING} ^n=(.*)$
    RewriteRule index.php.* http://www.sitename.com/pages/%1 [r=301,nc]
    

    这似乎也不起作用。你能详细说明你所说的吗?

    谢谢你 阿地亚

    【讨论】:

    • 请更新(编辑)您的问题,指出更新并评论 Guss 的答案,而不是添加新的答案。
    【解决方案3】:

    不要在重写规则中使用 url,apache 然后发送一个 http 200 代码,然后是 301...

    试试看。像这样:

    RewriteRule (index\.php)(?n=)(.*) /pages/$3 [r=301]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-03
      • 1970-01-01
      • 2018-05-31
      • 2019-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-30
      相关资源
      最近更新 更多