我有.htaccess重写rure,它也重写文件夹

时间:2018-05-07 12:58:30

标签: apache .htaccess mod-rewrite url-rewriting

这是我的代码:

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和图片。

由于

1 个答案:

答案 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]