簡體   English   中英

如何為此編寫htaccess規則

[英]How to write an htaccess rule for this

我是htaccess規則的新手,我發現很難編寫htaccess規則進行轉換

http://www.frontieragturf.com/category.php?cat_id=1

http://www.frontieragturf.com/category/1

我已經嘗試了這些規則,但是沒有用。

.htaccess刪除查詢字符串,保留SEO樣式網址
使用.htaccess自定義網址或隱藏查詢字符串

RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} "cat_id=" [NC]
RewriteRule (.*)  /$1? [R=302,L]

我已經寫了這個,但是它刪除了整個查詢字符串,包括1
像這樣http://www.frontieragturf.com/category.php

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

將此代碼放在您的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM