删除“.php”扩展名并获取 ID

Remove '.php' extension and get the id

提问人:Amrit Gupta 提问时间:11/14/2023 最后编辑:Peter MortensenAmrit Gupta 更新时间:11/16/2023 访问量:54

问:

考虑:

RewriteRule ^([A-Za-z0-9-/]+)$ view.php?id=$1 [L]
RewriteRule ^([A-Za-z0-9-/]+)$ lista.php?category=$1 [L]

我删除了 .php 扩展名并编写了两条规则,但单击不同的两个链接,将打开同一页面。 只有第一个重写规则有效,但第二个规则不起作用。我该如何解决?

php .htaccess

评论

0赞 Nico Haase 11/14/2023
你想用这个实现什么?指向同一脚本的两个规则,听起来有点奇怪
0赞 Peter Mortensen 11/16/2023
原始版本几乎无法理解,但 ChatGPT(或类似版本)无论如何都会产生答案。

答:

2赞 Ishtiaq Ahmed 11/14/2023 #1

您面临的问题是由于两个 RewriteRules 具有相同的模式。当 URL 与这些规则匹配时,第一个 URL 将始终优先,因为它是首先遇到的。第二条规则实际上被忽略了。(^([A-Za-z0-9-/]+)$)

若要解决此问题,可以区分这两个规则的模式。例如,您可以按如下方式修改模式:

RewriteRule ^view/([A-Za-z0-9-/]+)$ view.php?id=$1 [L]
RewriteRule ^category/([A-Za-z0-9-/]+)$ lista.php?category=$1 [L]

现在,像这样的 URL 将被重写为 ,而像这样的 URL 将被重写为 。example.com/view/someidview.php?id=someidexample.com/category/somecategorylista.php?category=somecategory

确保相应地更新您的链接。如果仍然遇到问题,可能需要检查 Apache 配置,以确保模块已启用,并且正在读取和处理文件。此外,请检查 .htaccess 文件或其他配置文件中是否存在任何冲突的规则或条件。mod_rewrite.htaccess

评论

1赞 Amrit Gupta 11/15/2023
谢谢,但css和图像不显示
2赞 DavidW 11/15/2023
这个答案看起来像是 ChatGPT 的复制粘贴