使用htaccess删除网址末尾的ID

问题描述

我在删除网址末尾的ID时遇到了一些麻烦。 使用以下代码片段可以正常工作,但是随后无法正确加载css和js等所有资产。

原始网址: http://mywebsite.com/poker-in-englisch/150/1448/98480

应为网址: http://mywebsite.com/poker-in-englisch/

这是我的摘录:

RewriteEngine on
RewriteRule  ^((?!([0-9]{3})\/([0-9]{4})\/([0-9]{5})).)*/ $1 [L,R=301]

由于ID始终为3个数字/ 4个数字/ 5个数字,因此我尝试通过负查找来捕获所有内容并将其删除。不幸的是,后来没有CSS或JS都能正常工作...而且我的页面看上去有些混乱。

任何帮助或提示表示赞赏

解决方法

能否请您尝试以下。只需检查条件(如果是),则REQUEST_FILENAME是否不是本地系统中的文件或目录,然后重写规则。在RewriteRule的正则表达式的第一个捕获组中,捕获组1中/第一次出现之前的所有内容,然后根据问题提及数字3 4和5。在通过提及$1进行url重写的替换部分时,它将uri重写为第一个捕获的部分。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/\d{3}/\d{4}/\d{5}/?$ /$1 [L]