问题描述
我使用以下重写规则数组来重写 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]