Как добавить / игнорировать подпапку в файле htaccess? - PullRequest
1 голос
/ 19 мая 2019

Я создал приложение на http://url/sdf19/

У меня есть файл .htaccess, помещенный в / sdf19 / содержащий RewriteRule для чистых URL.

Но я создал инструмент для создания PDF, которыйнаходится в подпапке /inc/tools.Мне нужно, чтобы ссылка на него работала непосредственно перед заголовками.

Несмотря на несколько часов поиска, попытки создания фрагментов, генераторов и т. Д. Я не могу получить запрос на http://url/sdf19/inc/tools, поскольку существующий набор RewriteRule принимает

Вот мой стартфайл

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

RewriteRule ^([a-z]+)\/?$ index.php?page=$1 [NC]
RewriteRule ^([a-z]+)\/([0-9]+)\/?$ index.php?page=$1&id=$2 [NC]
RewriteRule ^([a-z]+)\/([a-z]+)\/?$ index.php?page=$1&action=$2 [NC]
RewriteRule ^([a-z]+)\/([a-z]+)\/([0-9]+)\/?$ index.php?page=$1&action=$2&id=$3 [NC]

Я пытался добавить это в строке 4;RewriteCond %{REQUEST_URI} !^ inc/tools/ [NC] Это дало RewriteCond: ошибка строки неверного аргумента

Я пытался добавить это в строку 2;

RewriteCond %{REQUEST_URI} ^/inc/tools/(.*)$
RewriteRule ^.*$ - [L]

Желаемый результат заключается в том, что я могу разрешить прямой доступ к http://url/sdf19/inc/tools> все, что я пробовал до сих пор, я перенаправлен на базу http://url/sdf19/

1 Ответ

1 голос
/ 19 мая 2019

Может быть, мы могли бы пошагово решить эту проблему. Первый шаг, мы могли бы просто захотеть заставить что-то работать с как можно меньшими границами.

Давайте создадим выражение с низкой границей , может быть, что-то похожее на:

(.+)(\/inc\/tools)

Здесь мы можем просто добавить \/inc\/tools к RewriteCond, просто для тестирования. Позже мы можем изменить это.


RegEx

Если это не желаемое выражение, вы можете изменить / изменить его выражения в regex101.com .

RegEx Circuit

Вы также можете визуализировать свои выражения в jex.im :

enter image description here

Тест RewriteRule

Вы можете проверить свои правила Rewrite в htaccess.madewithlove.be .

Я не очень уверен насчет остальных RewriteRules, но я предполагаю, что они работают нормально и не конфликтуют с новым. Может быть, это или что-то подобное будет работать:

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_URI} \/inc\/tools  [NC]
    RewriteRule ^(.*)$ $1 [L]


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

    RewriteRule ^([a-z]+)\/?$ index.php?page=$1 [NC]
    RewriteRule ^([a-z]+)\/([0-9]+)\/?$ index.php?page=$1&id=$2 [NC]
    RewriteRule ^([a-z]+)\/([a-z]+)\/?$ index.php?page=$1&action=$2 [NC]
    RewriteRule ^([a-z]+)\/([a-z]+)\/([0-9]+)\/?$ index.php?page=$1&action=$2&id=$3 [NC]

</IfModule>
...