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

13z8s7eq  于 12个月前  发布在  PHP
关注(0)|答案(1)|浏览(127)

请考虑:

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

字符串
我删除了 .php 扩展名并编写了两条规则,但单击不同的两个链接时,打开的是同一个页面。只有第一条重写规则有效,而第二条规则无效。我该如何解决这个问题?

vq8itlhq

vq8itlhq1#

你面临的问题是由于你的两个RewriteRules都有相同的模式(^([A-Za-z0-9-/]+)$)。当一个URL与这些规则匹配时,第一个规则总是优先,因为它是第一个遇到的。第二个规则实际上被忽略了。
要解决这个问题,您可以区分两个规则的模式。例如,您可以像这样修改模式:

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

字符串
现在,像example.com/view/someid这样的URL将被重写为view.php?id=someid,像example.com/category/somecategory这样的URL将被重写为lista.php?category=somecategory
请确保相应地更新您的链接。如果仍然遇到问题,您可能需要检查Apache配置,以确保启用了mod_rewrite模块,并且正在读取和处理.htaccess文件。此外,检查.htaccess文件或其他配置文件中是否存在任何冲突的规则或条件。

相关问题