【问题标题】:.htaccess RewriteRule for category/page in custom CMS.htaccess RewriteRule 用于自定义 CMS 中的类别/页面
【发布时间】:2017-11-16 03:52:22
【问题描述】:

我有一个有效的 RewriteRule 可以将任何页面重写为文字 url:

RewriteRule ^(.+)$ index.php?page=$1 [QSA,L]

问题是我想添加 page=$1&category=$2 并将其转换为...显然... /category/page

我试过了,但它似乎不起作用:

RewriteRule ^([^/]+)/([^/]+)$ index.php?page=$1&category=$2 [QSA,L]

我应该注意,我仍然希望能够访问没有类别的页面 - 例如 /login 或 /about 应该转到 index.php?page=about

【问题讨论】:

    标签: php regex apache .htaccess mod-rewrite


    【解决方案1】:

    感谢所有的贡献...

    因为我需要同时满足 /page 和 /category/page...我最终这样做了:

    RewriteRule ^([0-9a-zA-Z_\-][^/]+)$ index.php?page=$1 [N]
    RewriteRule ^([0-9a-zA-Z_\-]+)/([0-9a-zA-Z_\-]+)$ index.php?category=$1&page=$2 [L]
    

    但这只是解决方案的一半,因为我需要修改我的 PHP 以检查是否设置了类别,如果不匹配则发送 404。否则/invalid_category/valid_page仍然可以工作。

    首先,这些想法将我推向了正确的方向,谢谢。

    【讨论】:

      【解决方案2】:

      这对你有用。

      RewriteEngine On
      
      RewriteRule ^([^/]*)/([^/]*)$ /index.php?category=$1&page=$2 [L]
      

      如果您想轻松生成重写 url,有很多在线重写 url 生成器。

      【讨论】:

      • 有趣的是从来没有搜索过。一定会去看看的。
      • 如果我们想访问 /login 怎么办?还是没有分类的页面?
      • 为此,您可以添加另一条路线,就像您为产品添加的路线一样。但是我觉得如果你在你的产品重写 url 中添加一个后缀会更好,这样你就可以保持其他路由不变。例如:在产品重写网址中,您可以添加产品/类别/页面之类的后缀。
      【解决方案3】:

      您的解决方案如下。

      RewriteRule ^([0-9a-zA-Z_\-]+)/([0-9a-zA-Z_\-]+)$ index.php?page=$1&category=$2 [NC,L]
      

      输入网址:http://www.test.com/my-cat/my-page

      它将被视为:http://www.test.com/index.php?page=my-cat&category=my-page

      【讨论】:

      • 一个问题...如果我们想访问 /login 怎么办?还是没有分类的页面?
      • 那么我们应该在这里加上前缀。像这样RewriteRule ^pages/([0-9a-zA-Z_\-]+)/([0-9a-zA-Z_\-]+)$ index.php?page=$1&category=$2 [NC,L]
      【解决方案4】:

      试试这个

          #https://www.example.com/index.php?category=9&page=CBSE `#https://www.example.com/category/page/CBSE`
      
      
      Method One:
      
          #use this code for generate new url 
      
      RewriteRule ^index/([0-9a-zA-Z]+)/([0-9a-zA-Z]+)$ index.php?category=$1&page=$2 [NC,L]
      
          Method Two :
      
          RewriteRule ^index/([0-9a-zA-Z]+)/([0-9a-zA-Z]+)$ index.php?category=$1&page=$2
      
      
          Note :Hit Your Url index.php?category=$1&page=$2 to convert $i & $2 Create Dynamic Url Your Id Bases
      

      【讨论】:

      • 非常感谢...会试一试。
      【解决方案5】:

      试试下面,我们是在指示 apache 不要寻找目录或文件。

      RewriteEngine On
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^([^/]+)/([^/]+)$ index.php?page=$1&category=$2 [QSA,L]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-04-28
        • 2018-11-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-05
        相关资源
        最近更新 更多