Php 使用ApacheModRewrite的友好URL
我已经读了一段时间了,我已经很接近了,但正在与最后的障碍作斗争 我有这样一个url: site.com/detail/123/some-description/maybe-some-more-description 我想成为什么样的人 site.com/details.php?id=123 到目前为止我已经知道了Php 使用ApacheModRewrite的友好URL,php,regex,apache,mod-rewrite,Php,Regex,Apache,Mod Rewrite,我已经读了一段时间了,我已经很接近了,但正在与最后的障碍作斗争 我有这样一个url: site.com/detail/123/some-description/maybe-some-more-description 我想成为什么样的人 site.com/details.php?id=123 到目前为止我已经知道了 RewriteRule detail/(.*)/.*$ details.php?id=$1 根据这个()的结果 details.php?id=123/一些文本 我该如何去掉最后的一些
RewriteRule detail/(.*)/.*$ details.php?id=$1
根据这个()的结果
details.php?id=123/一些文本
我该如何去掉最后的一些文本呢?在您的情况下,似乎您还有一组
/text/
将规则更改为:
RewriteRule detail/(.*)/.$details.php?id=$1
到
RewriteRule detail/(.*)/(.*)/.$details.php?id=$1
如果您不知道有多少斜杠,可以使用带有排除斜杠的组[^\/]*
:
RewriteRule detail/([^\/]*)/.*$details.php?id=$1
试试这个:
- 正则表达式:
(.*detail)\/(\d+)\/.
- 替换:
$1.php?id=$2
site.com/detail.php?id=123
它们都可以在同一时间进行测试
将网站基本URL与(.*detail)
匹配,并捕获到组详细信息
$1
与斜杠本身匹配(必须转义)\/
匹配号码并将其捕获到组(\d+)
$2
与URL的其余部分匹配,不将其包含在替换内容中会有所帮助\/.*
detail
和details
之间的区别吗?RewriteRule^([A-Za-z0-9]+)$file.php?key=$1[L,QSA]
在锚定标签中使用
<a href="details/<?php $id?>">
感谢您的快速回复。那么你需要知道下面斜杠的数目吗?例如,我不能说将第一个斜杠中的内容存储为$1,然后忽略它后面的所有内容?酷,我认为这样做了。我不认为我需要第一组,但这基本上就是我要找的:detail\/(\d+)\/.*所以我把它添加到Wordpress中,它在.htaccess RewriteRule^(.*)\/details\/([a-zA-Z0-9\+)\/./detail/?id=[QSA,L]中生成了以下内容这似乎不起作用,我可以看到它在这里匹配,在这里似乎没问题:但当我通过Apache/Wordpress在本地运行它时,它似乎不起作用。有什么想法吗?