Подтвердить что ты не робот

RewriteCond, чтобы пропустить правило, если существует файл или каталог

Я пытаюсь настроить файл htacess, чтобы пропустить правило перезаписи, если файл или каталог существует, но когда файл существует, он изменяет URL-адрес на что-то другое. Я не знаю, почему это происходит. Вот мой файл htaccess:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^project/([^/\.]+)/?$ index.php?view=project&project=$1 [L]
RewriteRule ^for/content/ag index.php?view=opening&section=ag [L]
RewriteRule ^for/content/bus index.php?view=opening&section=bus [L]
RewriteRule ^for/content/fcs index.php?view=opening&section=fcs [L]
RewriteRule ^for/content/market index.php?view=opening&section=market [L]
RewriteRule ^for/content/trade index.php?view=opening&section=trade [L]
RewriteRule ^for/content/teched index.php?view=opening&section=teched [L]
RewriteRule ^for/content/([^/\.]+)/?$ index.php?view=content_area&section=$1 [L]

Каталог/project/nti существует с файлом index.php. Когда вводится адрес mywebsite.com/folder/project/nti, он изменяется на mywebsite.com/folder/project/nti/?view=project&project=nti. Я применяю это на тестовом сервере, где образец сайта находится в подпапке, но когда он реализован, он будет находиться в корневой папке веб-сервера.

Спасибо за любую помощь!

4b9b3361

Ответ 1

Удалите лишний [OR] и введите свой код следующим образом:

# If the request is not for a valid directory
RewriteCond %{REQUEST_FILENAME} !-d
# If the request is not for a valid file
RewriteCond %{REQUEST_FILENAME} !-f
# If the request is not for a valid link
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^project/([^/.]+)/?$ index.php?view=project&project=$1 [L,NC,QSA]