这是我的代码:
RewriteRule ^([A-Za-z0-9-]+)/?$ index.php?category=$1 [NC,L]
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+) index.php?category=$1&subcategory=$2 [NC,L]
现在的问题是,它实际上将目录和子目录分别视为类别和子类别。我已经尝试了许多不同的解决方案来保持目录不变,但似乎都没有。
有人建议我:RewriteCond %{REQUEST_FILENAME} -d [NC]
RewriteRule .* - [L]
AND
RewriteCond %{REQUEST_URI} !^/css
RewriteCond %{REQUEST_URI} !^/js
RewriteCond %{REQUEST_URI} !^/images
RewriteCond %{REQUEST_URI} !^/digitalserp
RewriteCond %{REQUEST_URI} !\.(?:css|js|jpe?g|gif|png)$ [NC]
直到现在都无效。请建议我制作像http://www.example.com/category/sub-category这样的干净网址的最佳方法,而无需重写所有CSS,JS和图片。
由于
答案 0 :(得分:1)
尝试使用END
代替L
。它会阻止所有进一步的重写,因为Apache循环直到它找不到进一步的匹配规则,或者通过达到限制来终止循环。如果由于您的Apache已经过时而无法使用END
,请将DPI
添加到原始规则中,以便路径不会转移到后续循环。
RewriteRule ^([A-Z0-9-]+)/?$ index.php?category=$1 [NC,B,QSA,END]
RewriteRule ^([A-Z0-9-]+)/([A-Z0-9-]+)/? index.php?category=$1&subcategory=$2 [NC,B,QSA,END]