【问题标题】:.htaccess rewriteRule help.htaccess rewriteRule 帮助
【发布时间】:2011-04-23 01:23:18
【问题描述】:

我的 index.html 中有一个链接:

  href="my_page.php?cat=14&p=1";

现在,我该如何重写它,使它看起来像这样:

 /my_page/14/1

到目前为止我有这个,但我不知道如何将结尾的“/1”添加到这个:

  RewriteRule ^kategori/([0-9_]+)$ browse_cat.php?cat_gr=$1 [NC]

谢谢

【问题讨论】:

  • 对不起,我不完全明白你想要做什么。您希望浏览器地址栏显示/my_page/14/1服务器显示/my_page.php?cat=14&p=1(这很有意义)还是相反?
  • 我正在尝试重写一个 URL...正是,这就是我想要的...你说的。
  • 您需要修复 index.html 中的链接,然后,一旦您修复了重写规则。

标签: php javascript html .htaccess browser


【解决方案1】:

家里没有安装 apache,但这应该可以解决问题。

  RewriteRule ^kategori/([0-9_]+)(?:/(0-9]+))?$ browse_cat.php?cat_gr=$1&p=$2 [NC]

(?: ...)?使第二部分可选。所以 /kategori/14 和 /kategori/14/1 应该可以工作。

如果没有,你需要两条规则

  RewriteRule ^kategori/([0-9_]+)$ browse_cat.php?cat_gr=$1 [NC]
  RewriteRule ^kategori/([0-9_]+)(?:/(0-9]+))?$ browse_cat.php?cat_gr=$1&p=$2 [NC]

【讨论】:

    【解决方案2】:
    ReWriteCond {%REQUEST_URI} ^/my_page/([0-9]*)/([0-9]*)
    ReWriteRule .* /my_page.php?cat=%1&p=%2 [NC,L]
    

    这只有在至少指定了 cat 和 p 时才有效。

    【讨论】:

      【解决方案3】:

      如果您实际使用像 /my_page.php?cat=14&p=1 这样的 URL 并希望它们“显示”为 /my_page/14/1,则需要两条规则:一条将 /my_page.php?cat=14&p=1 从外部重定向到 /my_page/14/1,另一条重写 @987654325 @ 内部为/my_page.php?cat=14&p=1

      RewriteCond %{THE_REQUEST} ^GET\ /my_page\.php\?
      RewriteCond %{QUERY_STRING} ^cat=([0-9]+)&p=([0-9]+)$
      RewriteRule ^my_page\.php$ /my_page/%1/%2 [L,R=301]
      
      RewriteRule ^my_page/([0-9]+)/([0-9]+)$ my_page.php?cat=$1&p=$2 [L]
      

      请注意,此规则仅适用于此特定 URL(数字和顺序或参数)。更一般的规则会变得更复杂;在这种情况下,使用 PHP 等高级语言可能更容易。

      此外,如果您已经在 HTML 文档中使用了“正确”的 URL,而不是重定向/重写每个请求两次,那会更好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-29
        • 2015-10-23
        • 1970-01-01
        相关资源
        最近更新 更多