No meu servidor de produção, as coisas estão bem: a remoção da extensão do PHP e as regras de barra à direita estão em vigor no meu arquivo .htaccess
.
Mas, localmente, isso não está funcionando (bem, parcialmente, de qualquer forma). Estou executando o Apache2 com um host virtual para o site em questão. Eu decidi não usar o arquivo .htaccess
neste caso e apenas adicionar as regras ao arquivo httpd-vhosts.conf
, o que, eu ouvi, se possível no seu servidor, é o melhor caminho a ser seguido.
O host virtual está funcionando e a URL que eu uso para o meu site é assim:
devserver:9090
Aqui está o meu arquivo httpd-vhosts.conf
:
NameVirtualHost *:9090
# for stuff other than this site
<VirtualHost *:9090>
ServerAdmin admin@localhost
DocumentRoot "/opt/lampstack/apache2/htdocs"
ServerName localhost
</VirtualHost>
# for site in question
<VirtualHost *:9090>
ServerAdmin admin@localhost
DocumentRoot "/opt/lampstack/apache2/htdocs/devserver"
ServerName devserver
<Directory "/opt/lampstack/apache2/htdocs/devserver">
Options Indexes FollowSymLinks Includes
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<IfModule rewrite_module>
RewriteEngine ON
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule (.*)/$ /$1.php
</IfModule>
# error docs
ErrorDocument 404 /errors/404.php
</VirtualHost>
O problema que estou enfrentando é que quando eu vou para diretórios no site, recebo um erro 404. Então, por exemplo, isso:
devserver:9090/page.php
vai para
devserver:9090/page/
mas indo para um diretório (que tem um index.php
):
devserver:9090/dir/
gera uma página de erro 404.
Se eu digitar devserver:9090/dir/index.php
, recebo devserver:9090/dir/index/
e o conteúdo que eu quero aparecer ...
Alguém pode me ajudar com minhas regras de reescrita?
OBSERVAÇÃO
Veja minha resposta abaixo
50 pontos para qualquer um que possa esclarecer essa resposta. Eu comecei uma recompensa e depois encontrei a minha resposta, mas ainda estou aprendendo, então qualquer boa dica pode valer +50.