我是新的htaccess规则,我发现很难写一个htaccess规则转换
http://www.frontieragturf.com/category.php?cat_id=1
to
http://www.frontieragturf.com/category/1
我试过这些规则,但都不起作用。
。htaccess删除查询字符串,保持SEO样式url
使用.htaccess自定义Url或隐藏查询字符串
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} "cat_id=" [NC]
RewriteRule (.*) /$1? [R=302,L]
我写了这个,但它删除了整个查询字符串,包括1
像这样http://www.frontieragturf.com/category.php
将此代码放入您的DOCUMENT_ROOT/.htaccess
文件:
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} 's/+category'.php'?cat_id=([^'s&]+) [NC]
RewriteRule ^ category/%1? [R=302,L]
RewriteRule ^category/([^/.]+)/?$ category.php?cat_id=$1 [L,QSA,NC]
将302
更改为301
,一旦您验证它为您工作
RewriteEngine On
RewriteCond %{REQUEST_URI} ^category'.php$
RewriteCond %{QUERY_STRING} ^cat_id=('d+)$ [NC]
RewriteRule .* /category/%1? [R=302,L]
这里,%1
指的是前一个RewriteCond
的第一个匹配组,而$1指的是这个RewriteRule
的第一个匹配组,和RewriteRule (.*) /category/$1
一样。手册上写着:
RewriteCond反向引用:这些是形式为%N (0 <= N <= 9)的反向引用。%1到%9提供对模式的分组部分(同样,在括号中)的访问,从当前条件集中最后匹配的RewriteCond开始。%0提供对该模式匹配的整个字符串的访问。
最后一个?
终止原始查询字符串。如果没有它,重定向查询将重复:它将是/category/1?cat_id=1
,而OP需要/category/1
。