У меня есть .htaccess переписать Rure, которые также переписать папки - PullRequest
0 голосов
/ 07 мая 2018

Это мой код:

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]

И

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]

Ничего не работает до сих пор. Пожалуйста, предложите мне лучший способ сделать чистый URL-адрес, например http://www.example.com/category/sub-category, без переписывания всех CSS, JS и изображений.

Спасибо

1 Ответ

0 голосов
/ 07 мая 2018

Попробуйте использовать END вместо L. Это предотвращает все дальнейшее переписывание, потому что Apache зацикливается до тех пор, пока не найдет дальнейшие подходящие правила, или пока цикл не прекратится, достигнув предела. Если вы не можете использовать END, потому что ваш Apache очень старый, добавьте 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]
...