.htaccess RewriteEngine каждый URL

1

Я хочу, чтобы .htaccess отправил каждый файл/каталог на мой index.php. У меня это до сих пор:

RewriteEngine On

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

RewriteRule ^(.*)$ index.php?urlparam=$1 [NC,L] 


Но эта ошибка появляется на mysite.com/foobar, если каталог существует:

запрещено

У вас нет разрешения на доступ к этому документу.

Если не:

не обнаружена

Запрашиваемый документ не был найден на этом сервере. (404)

  • 0
    Неясно (для меня), хотите ли вы, чтобы URL-адреса файлов или каталогов, даже если они существуют, направлялись через index.php
Теги:
.htaccess
mod-rewrite

1 ответ

1
Лучший ответ

Наличие как !-f и -f не имеет смысла. Это, по существу, говорит:

Выполните это правило перезаписи, если запрос не соответствует существующему файлу, а запрос также соответствует существующему файлу.

Очевидно, вы не можете иметь обоих.

То, что вы хотите, просто:

RewriteEngine On

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

RewriteRule ^(.*)$ index.php?urlparam=$1 [NC,L] 

Ещё вопросы

Сообщество Overcoder
Наверх
Меню