Php 使用多个参数重写apache url keep parameter=value

Php 使用多个参数重写apache url keep parameter=value,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,我有一个这样的url 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 我的目标是使该url看起来像这样 fullarticle.php?sID=3

我有一个这样的url

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
我的目标是使该url看起来像这样

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
还有一些人运气不好

我如何编写规则/条件来实现这一点?如果有更简单的方法,我愿意接受建议

感谢您花时间研究这一点。

您可以尝试从名称映射到数字ID。但这需要在之前设置这样的地图,例如

categories.txt:

news 1
sports 2
entertainement 3
crime 11
baseball 21
football 22
movie 31
subcategories.txt:

news 1
sports 2
entertainement 3
crime 11
baseball 21
football 22
movie 31
titles.txt:

rewrite-rules-solved 83
stackoverflow-rocks 77
you-are-the-greatest 27
然后把它用在



除了
txt
文件,还可以使用或映射。这将允许从程序或SQL select语句检索名称到id的映射。有关更多详细信息,请参阅
RewriteMap
手册。

我最后做的是像这样构建我的动态URL:

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个小时就弄明白了。我为我自己感到骄傲

“我有一个像这样的url”。。。“要使该url看起来像这样”-要使其看起来像这样,首先需要更改应用程序中的url,使其看起来像这样。你已经做了吗?(很抱歉,但我不得不问,因为这么多人都问同一个问题,没有做第一步,而是希望在.htaccess中完成整个过程。)不用担心。在我的php中,我生成像fullarticle.php?sID=3&ssID=21&id=1496这样的URL。我尝试了很多重写规则,试图让它看起来像是没有运气的整篇文章/新闻/犯罪。(您的PHP应该以您希望用户看到的格式生成URL。)您打算如何将
/news/crime
转换为
sID=3&ssID=21
等。?你从哪里得到数字ID?我不想对抗,但我相信这就是重写规则的目的。问题是我尝试过的所有规则/条件仍然不起作用。任何建设性的答复都将不胜感激。这给了我一个线索。也许我很快就能回答我自己的问题了。谢谢奥拉夫。这确实有效。然而;这将是大量的维护工作。我们的类别、子类别和标题来自数据库,并不断添加/更改。我正在考虑将URL转换为fullarticle/News-3/Crimes-21/title-1496并从中获取值。我正在分离新闻和3、犯罪和21等。再次感谢如果数据库中已经有这些,您可以尝试使用
prg
dbd
映射,而不是
txt
文件。请参阅更新的答案。感谢您的时间和建议Olaf。我很感激。然而;我需要马上把它修好。我保证,我会研究prg或dbd,这是我目前不喜欢的话题,但看起来很有希望作为将来的参考。你应该接受你自己的答案,这样每个人都可以看到问题已经解决。