перезапись .htaccess в папке также влияет на ее вложенные папки

#apache #.htaccess #mod-rewrite

#апач #.htaccess #mod-перезапись

Вопрос:

У меня есть PHP-файл, расположенный в папке («www.mysite.com/folder/test.php «), который принимает аргумент get (str) и, скажем, print . чтобы сделать URL-адреса удобными для SEO, я пытаюсь переписать их следующим образом:

 RewriteBase /
RewriteRule ^folder/(.*)$ folder/test.php?str=$1amp;%{QUERY_STRING} 
 

правило перезаписи работает нормально, проблема в том, что мне нужно получить доступ к вложенной папке этой папки. например, если в test.php который находится по адресу www.mysite.com/folder/images/img.jpg , в соответствии с приведенным выше правилом требуется images/img.jpg и передает его в php-файл.

как можно предотвратить это?

Ответ №1:

Посмотрите на:

 RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
 

Должно решить вашу проблему — это просто гарантирует, что запрашиваемый URL-адрес не является ни фактическим файлом, ни каталогом на сервере.

Ответ №2:

Когда вы говорите ему «любой персонаж», он думает, что вы действительно имеете в виду ЛЮБОГО ПЕРСОНАЖА.

 RewriteRule ^folder/([^/]*)$ folder/test.php?str=$1amp;%{QUERY_STRING} 
 

Комментарии:

1. спасибо за быстрый ответ, я попробовал ваше решение, но происходит то же самое, он не читает css, js и изображения, которые находятся в /folder/css , folder/images/ folder/js

2. я думаю, мы должны исключить строки, содержащие что-либо, кроме aA-zZ 0-9 и и —

3. что усложняет ситуацию, так это то, что фактическое местоположение файла совпадает с URL-адресом, который я использую 🙂