【问题标题】:How do I get a url to use pretty urls? [duplicate]我如何获得一个 url 来使用漂亮的 url? [复制]
【发布时间】:2011-12-06 02:20:46
【问题描述】:

可能重复:
Url Rewriting Help

如何让以/index.php?p=2 结尾的网址显示为/2,而不是使用.htaccess(漂亮的网址)?

我目前正在开发一个网络漫画展示网站,但我的.htaccess 文件遇到了问题。我正在尝试将/index.php?p=2 重写为/2,但由于某种原因它不起作用。

所以是的,任何帮助将不胜感激!

【问题讨论】:

  • 请发布您尝试过的内容(您当前的 .htaccess 规则)。
  • 您可能会觉得这很有帮助stackoverflow.com/questions/8394424/…
  • @limestudios 如果您在转到/2 时尝试查看/index.php?p=2,那么这是重复的,这是我的猜测。如果您希望在转到/index.php?p=2 时显示/2,那会很奇怪,但它本质上是相同的重写问题,但细节不同。投票以任何方式关闭。如果你能澄清你想要什么可能会很好。
  • 这场针对每个 mod_rewrite 问题的“投票结束”战争必须停止。是的,问题将是相似的,但它不会增加网站的信噪比,并且实际上可能会帮助处于这种确切情况的人(这与链接的问题不同)。 @Levi Morrison
  • @AndrewMoore 我不会投票关闭每个mod_rewrite 问题。但这一个是纯通用的。有关几乎相同的问题,请参阅stackoverflow.com/questions/7093190/simple-mod-rewrite。作为旁注,我打算将其作为该问题的副本关闭,但是当我单击以查看已链接的问题时,我忘记将其更改回来。在这一点上,我无能为力。

标签: .htaccess mod-rewrite


【解决方案1】:

.htaccess 无法将/index.php?p=2 重写为/2您正在反向处理问题。

重写规则告诉 Apache 在获取特定 URI 时执行某些操作。您真正需要做的是告诉 Apache 将请求“重写”到/2,以便它取而代之的是/index.php?p=2。您可以使用以下RewriteRule

RewriteRule    ^([0-9]+)$    index.php?p=$1    [L]

然后在您的 HTML 中更改每个链接以指向重写的 URI 而不是规范的 URI。 Apache 不会为您“重写”您的链接。然而,在上述规则的帮助下,它会在客户端查询/2 时获取正确的资源。

【讨论】:

    【解决方案2】:

    制作一个与此类似的 .htaccess 文件...(可能需要根据 mod 重写标志文档修改/更改标志:http://httpd.apache.org/docs/2.3/rewrite/flags.html

    RewriteCond %{SCRIPT_FILENAME} !-f
    RewriteCond %{SCRIPT_FILENAME} !-d
    RewriteRule ^([A-Za-z_0-9-]+)/?$ index.php?p=$1 [QSA,L]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-02
      • 2021-01-29
      • 1970-01-01
      • 2013-02-13
      • 1970-01-01
      • 2011-05-06
      • 2019-05-08
      • 1970-01-01
      相关资源
      最近更新 更多