Não redirecionar um diretório

2

Preciso de ajuda com meu redirecionamento .htaccess personalizado.

Aqui estão as minhas regras .htaccess :

# AddHandler application/x-httpd-php .php .htm

  RewriteEngine on
  # 301 redirect to domain without 'www.'
  RewriteCond %{HTTP_HOST} ^example.com$ [NC]
  RewriteRule ^(.*)$ http://www.example.com/$1 [L]

  RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC,OR]
  RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
  RewriteCond %{REQUEST_FILENAME} !/www\.example\.com/public/www/
  RewriteRule ^(.*)$ /public/www/$1 [L]

  RewriteCond %{HTTP_HOST} ^(www\.)?cms\.example\.com$ [NC]
  RewriteCond %{REQUEST_FILENAME} !/cms\.example\.com/public/core/
  RewriteCond %{REQUEST_FILENAME} !/cms\.example\.com/tmp/
  RewriteRule ^(.*)$ /public/core/$1 [L]

Assim, tudo do diretório principal é redirecionado para public/... . É possível não redirecionar um diretório no diretório principal?

Por exemplo:

http://example.com/something me redirecionará para public/www/something mas quero que aponte para root_folder/something .

    
por PsychoX 11.07.2011 / 10:32

2 respostas

2

Adicione esta condição à sua regra: RewriteCond %{REQUEST_URI} !^/something .

Sua regra deve ficar assim, por exemplo:

RewriteCond %{HTTP_HOST} ^www\.mydomain\.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.mydomain\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/something
RewriteCond %{REQUEST_FILENAME} !/www\.mydomain\.com/public/www/
RewriteRule ^(.*)$ /public/www/$1 [L]
    
por 11.07.2011 / 12:17
0

Se você quiser apenas evitar que "um diretório" seja reescrito, seria mais eficiente fazer essa verificação no padrão RewriteRule , em vez de adicionar outra condição. Por exemplo:

RewriteRule !^something /public/www%{REQUEST_URI} [L]

No entanto, seria melhor reordenar suas regras para que você esteja executando sua /public/www/ check no padrão RewriteRule , já que isso é o mais comum. Por exemplo:

RewriteCond %{HTTP_HOST} ^www\.example\.com
RewriteCond %{REQUEST_URI} !/something
RewriteRule !^/public/www/ /public/www/$1 [L]

(Talvez tenha sido um problema com seu código exemplificado, mas você duplicou desnecessariamente a HTTP_HOST check.)

    
por 11.06.2018 / 10:54