我有这样的网址
fullarticle.php?sID=3&ssID=21&id=1496
sID = category (Forums, entertaiment, news, sports etc)
ssID = sub category (businnes, health, crime, etc)
id = article id
我的目标是让这个网址看起来像这样
fullarticle/News/Crimes/title
我在.htaccess
尝试了这个:
RewriteRule ^([^/]+)/([^/]+)/([^\.]+)/([^\.]+)/([^\.]+)/([^\.]+)$ fullarticle.php?$1=$2&$3=$4&$5=$6 [L,NC,QSA]
另一个
RewriteRule ^/([a-zA-Z\+]+)/([a-zA-Z\+\-]+)/([0-9]+)$ fullarticle.php?sID=3&ssID=21&id=1496
还有一些没有运气。
我如何编写规则/条件来实现这一目标?如果有更简单的方法,我愿意接受建议。
感谢您抽出宝贵时间来研究这个问题。
答案 0 :(得分:1)
您可以尝试cppreference从名称映射到数字ID。但这需要在之前设置这样的地图,例如
categories.txt中:
news 1
sports 2
entertainement 3
subcategories.txt:
crime 11
baseball 21
football 22
movie 31
TITLES.TXT:
rewrite-rules-solved 83
stackoverflow-rocks 77
you-are-the-greatest 27
然后在RewriteMap
RewriteMap cat "txt:/path/to/categories.txt"
RewriteMap sub "txt:/path/to/subcategories.txt"
RewriteMap title "txt:/path/to/titles.txt"
RewriteRule ^/(.*?)/(.*?)/(.*)$ fullarticle.php?sID=${cat:$1}&ssID=${sub:$2}&id=${title:$3} [L]
您还可以使用RewriteRule
或prg
映射,而不是txt
个文件。这将允许从程序或SQL select语句中检索名称到id映射。有关详细信息,请参阅RewriteMap
手册。
答案 1 :(得分:0)
我最终做的是构建我的动态网址:
fullarticle/3/21/1496/title.html
其中3 =类别,21 =子类别,1496 =标题ID
我的重写看起来像这样:
RewriteRule ^fullarticle/([^/]+)/([^/]+)/([^\.]+)/([a-zA-Z0-9-]+).html$ fullarticle.php?sID=$1&ssID=$2&id=$3 [L,NC,QSA]
我是新手,我花了6个小时才搞清楚。我为自己感到自豪!