Tente alterar sua regra de reescrita para isso:
RewriteRule ^/directory(.*) /directory/public$1 [NC,L]
Você não precisa do RewriteCond
Eu quero reescrever uma URL com o mod_rewrite do link para link (onde o diretório seria direcionado para o diretório / public)
Eu tentei várias coisas, mas não consigo entender. Aqui está minha configuração:
<VirtualHost xxx.xxx.xxx.xxx:443>
ServerAdmin [email protected]
ServerName www.server.com
DocumentRoot /var/www/server.com
<Directory /var/www/server.com>
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/directory
RewriteRule ^(.*)$ /directory/public/ [L]
</Directory>
</VirtualHost>
Dentro de um contexto <Directory >
, os URIs nas regras de regravação não começam com /
.
Isso também é verdade para os URIs em regras de regravação em .htaccess
arquivos porque eles estão implicitamente em um diretório.
A parte relevante da documentação é intitulada " Re-regravações por diretório "
Para corrigir isso, você pode fazer uma das seguintes opções:
<Directory >
. <Directory >
. Se fosse minha escolha, usaria a opção 3.
A partir da minha leitura da página de documentação vinculada acima, parece sugerir que você deve ter o Options FollowSymLinks
habilitado para que o RewriteRules funcione em um contexto por diretório. Eu nunca testei isso sozinho. Se você tiver problemas para fazer o RewriteRules funcionar dentro desse bloco <Directory >
, tente adicionar Options +FollowSymLinks
.
Tags mod-rewrite apache-2.2 rewrite