Htaccess: меняет рут и не находит файлы
У меня есть файл htaccess, который я пытаюсь переписать, но это вызывает у меня множество проблем. Сначала вот мой файл htacess:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/ [R=301,L]
RewriteRule ^([a-zA-Z0-9]*)/?$ index.php?category=$1&%{QUERY_STRING}
RewriteRule ^([a-zA-Z0-9]*)/([a-zA-Z0-9]+)/?$ index.php?category=$1&itemId=$2&%{QUERY_STRING}
RewriteRule ^login$ login.php?category=$1&%{QUERY_STRING} [L]
Первая проблема заключается в том, что когда я делаю запрос типа "mysite / foo / bar /", он переписывает строку запроса в категории и itemId, но также меняет базовый каталог для моих css-файлов и Js-файлов на / foo / bar / дизайн / CSS / style.css
Вторая проблема заключается в том, что у меня есть несколько путей, таких как "login /", "register /", "users /", и когда я пытаюсь загрузить соответствующий файл, он говорит:
The requested URL /login/ was not found on this server.
Спасибо за помощь!
1 ответ
Сначала измените ваш.htaccess так:
RewriteEngine On
## If the request is for a valid directory
RewriteCond %{REQUEST_FILENAME} -d [OR]
## If the request is for a valid file
RewriteCond %{REQUEST_FILENAME} -f [OR]
## don't do anything
RewriteRule ^ - [L]
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/ [R=301,L]
RewriteRule ^([a-zA-Z0-9]*)/?$ index.php?category=$1 [L,QSA]
RewriteRule ^([a-zA-Z0-9]*)/([a-zA-Z0-9]+)/?$ index.php?category=$1&itemId=$2 [L,QSA]
RewriteRule ^login/?$ login.php?category=$1&%{QUERY_STRING} [L,QSA]