重写规则数组从 url 隐藏类别

问题描述

我使用以下重写规则数组来重写 URL。

$rules = array(
    'image'             => "/image/(?'image'[\w\-]+)",// '/image/image-slug'
    'product-category'  => "/product-category/(?'product_category'[\w\-]+)",// '/product-category/category-slug'
    'product'           => "/product/(?'product'[\w\-]+)",// '/product/product-slug'
    'post'              => "/(?'post'[\w\-]+)",// '/post-slug'
    'home'              => "/"                                                // '/'
);

下面是我的 .htaccess。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^index\.PHP$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.PHP [QSA,L]
RewriteCond %{HTTP_HOST} baqsa\.pk [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.baqsa.pk/$1 [R,L]
</IfModule>

当前 URL 类似于 domain.com/product-category/category-slug 等。我想从 URL 中删除或隐藏 product-category。我想要这样的 URL domain.com/category-slug 当我从这里的数组中删除 product-category'product-category' => "/(?'product_category'[\w\-]+)", 然后它工作正常但是帖子 'post' => "/(?'post'[\w\-]+)", 不起作用..我是什么这里不见了?

解决方法

根据您显示的示例,您可以尝试以下操作吗?将 your_site 更改为您的实际域名,同时请确保在测试您的 URL 之前清除浏览器缓存。

RewriteEngine ON

RewriteCond %{SERVER_PORT} 80
RewriteRule ^ https://www.your_site%{REQUEST_URI} [R=301,NE,L]

RewriteRule ^product-category/(.*)/?$ $1 [R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]