#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-адресом, который я использую 🙂