Исключить все файлы из перезаписи (миграция NGINX в APACHE) - PullRequest
0 голосов
/ 20 февраля 2012

Моя структура URL похожа на

http://www.example.com/folder/index.php?dir=dir1

Чтобы иметь возможность доступа к ней с

http://www.example.com/folder/dir1

и в то же время перенаправить 1-й URL на 2-й, мой htaccess (в'folder') - это

Options +FollowSymLinks 

RewriteEngine On
RewriteBase /folder

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]

RewriteCond %{QUERY_STRING} ^dir=(.*)$ [NC]
RewriteRule ^ %1? [L,R=301,NE]

RewriteRule ^(.+)/? index.php?dir=$1 [L,QSA]

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

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

Переадресация и Rewrite работала безупречно, пока недавно я не переключился с NGINX на APACHE.

Проблема в том, что сейчастакже переписывает расширения файлов, которые мне не нужны!

Как я могу применить его только к каталогам и исключить из него ВСЕ файлы?

1 Ответ

0 голосов
/ 21 февраля 2012

Разобрался! :)

На самом деле пришлось добавить

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

до первого переписывания!

Итак, htaccess выглядит так:

Options +FollowSymLinks 

RewriteEngine On
RewriteBase /folder

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]

RewriteCond %{QUERY_STRING}  ^dir=(.*)$ [NC]
RewriteRule ^ %1? [L,R=301,NE]

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

RewriteRule ^(.+)/? index.php?dir=$1 [L,QSA]
...