问题描述
我在删除网址末尾的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]