Estou tentando ativar o mod_rewrite em uma instalação do XAMPP 5.6.3. Eu tenho acompanhado estes guias:
... e um monte de outras eu consegui google. Infelizmente, sem sucesso.
Eu tenho um projeto que foi desenvolvido no Linux, trabalhando perfeitamente lá, tendo o arquivo .htaccess
dentro:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
Eu tentei:
- Certificar-se de que a linha
LoadModule rewrite_module modules/mod_rewrite.so
não seja comentada em httpd.conf
.
- Substituindo
AllowOverride none
por AllowOverride all
em httpd.conf
(2 ou 3 ocorrências).
- Adicionando
AllowOverride all
diretivas em todas as seções <Directory>
que adicionei a httpd-vhosts.conf
quando o acima não funcionou, apenas no caso.
- Reiniciando após as alterações # 2 e # 3.
Estou tentando acessar URLs no diretório com o arquivo .htaccess, mas provavelmente nenhum deles é provavelmente reescrito e dar 404. O acesso ao arquivo para o qual eles devem ser reescritos é possível e não fornece erros. Acessar .htaccess
em si dá 403.
Eu também tentei adicionar:
RewriteLog "C:/XAMPP/apache/logs/rewrite.log"
RewriteLogLevel 3
... para httpd.conf
e httpd-vhosts.conf
, às vezes sem RewriteLog
, mas, quando eu faço isso, o Apache se recusa a iniciar - às vezes ele gera mensagens de erro genéricas no console do XAMPP, às vezes simplesmente trava. Não escreve nada em error.log
embora. Portanto, nenhuma saída de depuração mod_rewrite
. phpinfo()
, no entanto, mostra que os módulos carregados são:
core mod_win32 mpm_winnt http_core mod_so mod_access_compat mod_actions mod_alias mod_allowmethods mod_asis mod_auth_basic mod_authn_core mod_authn_file mod_authz_core mod_authz_groupfile mod_authz_host mod_authz_user mod_autoindex mod_cgi mod_dav_lock mod_dir mod_env mod_headers mod_include mod_info mod_isapi mod_log_config mod_cache_disk mod_mime mod_negotiation mod_proxy mod_proxy_ajp mod_rewrite mod_setenvif mod_socache_shmcb mod_ssl mod_status mod_version mod_php5
Portanto, deve estar em maior ou menor ordem de trabalho.
Isso está me deixando louco. Por favor ajude.
Abaixo estão os conteúdos completos de qualquer coisa que pareça remotamente útil:
link
ServerRoot "C:/XAMPP/apache"
Listen 80
LoadModule access_compat_module modules/mod_access_compat.so
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule allowmethods_module modules/mod_allowmethods.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule dav_lock_module modules/mod_dav_lock.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule headers_module modules/mod_headers.so
LoadModule include_module modules/mod_include.so
LoadModule info_module modules/mod_info.so
LoadModule isapi_module modules/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule cache_disk_module modules/mod_cache_disk.so
LoadModule mime_module modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule status_module modules/mod_status.so
LoadModule version_module modules/mod_version.so
<IfModule unixd_module>
User daemon
Group daemon
</IfModule>
ServerAdmin postmaster@localhost
ServerName localhost:80
<Directory />
AllowOverride all
Require all denied
</Directory>
DocumentRoot "C:/XAMPP/htdocs"
<Directory "C:/XAMPP/htdocs">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
<IfModule dir_module>
DirectoryIndex index.php index.pl index.cgi index.asp index.shtml index.html index.htm \
default.php default.pl default.cgi default.asp default.shtml default.html default.htm \
home.php home.pl home.cgi home.asp home.shtml home.html home.htm
</IfModule>
<Files ".ht*">
Require all denied
</Files>
ErrorLog "logs/error.log"
LogLevel warn
<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
<IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
CustomLog "logs/access.log" combined
</IfModule>
<IfModule alias_module>
ScriptAlias /cgi-bin/ "C:/XAMPP/cgi-bin/"
</IfModule>
<IfModule cgid_module>
</IfModule>
<Directory "C:/XAMPP/cgi-bin">
AllowOverride All
Options None
Require all granted
</Directory>
<IfModule mime_module>
TypesConfig conf/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddHandler cgi-script .cgi .pl .asp
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
</IfModule>
<IfModule mime_magic_module>
MIMEMagicFile "conf/magic"
</IfModule>
Include conf/extra/httpd-mpm.conf
Include conf/extra/httpd-multilang-errordoc.conf
Include conf/extra/httpd-autoindex.conf
Include conf/extra/httpd-languages.conf
Include conf/extra/httpd-userdir.conf
Include conf/extra/httpd-info.conf
Include conf/extra/httpd-vhosts.conf
Include "conf/extra/httpd-proxy.conf"
Include "conf/extra/httpd-default.conf"
Include "conf/extra/httpd-xampp.conf"
<IfModule proxy_html_module>
Include conf/extra/proxy-html.conf
</IfModule>
Include conf/extra/httpd-ssl.conf
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
AcceptFilter http none
<IfModule mod_proxy.c>
<IfModule mod_proxy_ajp.c>
Include "conf/extra/httpd-ajp.conf"
</IfModule>
</IfModule>
link
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "S:/efit_rails4/public"
Alias /remote-control "S:/ssm-misc/remote-control"
<Directory "S:/efit_rails4/public">
Require all granted
AllowOverride All
</Directory>
<Directory "S:/ssm-misc/remote-control">
Require all granted
AllowOverride All
</Directory>
ServerName SSM
</VirtualHost>
parte inferior do error.log:
[Fri Nov 28 05:43:56.875099 2014] [mpm_winnt:notice] [pid 9780:tid 380] AH00456: Apache Lounge VC11 Server built: Jul 17 2014 11:50:08
[Fri Nov 28 05:43:56.875099 2014] [core:notice] [pid 9780:tid 380] AH00094: Command line: 'c:\xampp\apache\bin\httpd.exe -d C:/XAMPP/apache'
[Fri Nov 28 05:43:56.876100 2014] [mpm_winnt:notice] [pid 9780:tid 380] AH00418: Parent: Created child process 8276
[Fri Nov 28 05:43:57.155297 2014] [ssl:warn] [pid 8276:tid 384] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name
[Fri Nov 28 05:43:57.255380 2014] [ssl:warn] [pid 8276:tid 384] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name
[Fri Nov 28 05:43:57.280385 2014] [mpm_winnt:notice] [pid 8276:tid 384] AH00354: Child: Starting 150 worker threads.
[Fri Nov 28 05:44:18.865136 2014] [authz_core:error] [pid 8276:tid 1728] [client 127.0.0.1:63898] AH01630: client denied by server configuration: S:/ssm-misc/remote-control/api/.htaccess
Atualizar
Depois de alguma persuasão (e ajuda de @ AD7six ), consegui que a saída de depuração funcionasse. Parece haver uma maneira nova de configurar isso:
RewriteBase /remote-control/api/
Estou estranho com o modo de reescrita que aparentemente reescreveu a URL corretamente e, em seguida, serviu 404. Além disso, tentei experimentar e descobri que se eu adicionar uma base de reescrita explícita igual ao diretório atual, por exemplo:
RewriteBase /remote-control/api/
O tipo de reescrita funciona - eu recebo index.php, embora eu tenha outros erros, então não consigo confirmar se realmente funciona. No entanto, não estou totalmente satisfeito com isso como uma solução. Além disso, a saída de depuração neste caso é um pouco mais longa, como se estivesse fazendo outra passagem ou algo assim. E no final, chega a um nome de arquivo idêntico, mas sem 404:
[Thu Dec 04 00:37:31.417478 2014] [rewrite:trace3] [pid 5636:tid 1728] mod_rewrite.c(475): [client ::1:58668] ::1 - - [localhost/sid#f51730][rid#88d4118/initial] [perdir S:/ssm-misc/remote-control/api/] strip per-dir prefix: S:/ssm-misc/remote-control/api/session -> session
[Thu Dec 04 00:37:31.417478 2014] [rewrite:trace3] [pid 5636:tid 1728] mod_rewrite.c(475): [client ::1:58668] ::1 - - [localhost/sid#f51730][rid#88d4118/initial] [perdir S:/ssm-misc/remote-control/api/] applying pattern '^' to uri 'session'
[Thu Dec 04 00:37:31.417478 2014] [rewrite:trace2] [pid 5636:tid 1728] mod_rewrite.c(475): [client ::1:58668] ::1 - - [localhost/sid#f51730][rid#88d4118/initial] [perdir S:/ssm-misc/remote-control/api/] rewrite 'session' -> 'index.php'
[Thu Dec 04 00:37:31.417478 2014] [rewrite:trace3] [pid 5636:tid 1728] mod_rewrite.c(475): [client ::1:58668] ::1 - - [localhost/sid#f51730][rid#88d4118/initial] [perdir S:/ssm-misc/remote-control/api/] add per-dir prefix: index.php -> S:/ssm-misc/remote-control/api/index.php
[Thu Dec 04 00:37:31.417478 2014] [rewrite:trace2] [pid 5636:tid 1728] mod_rewrite.c(475): [client ::1:58668] ::1 - - [localhost/sid#f51730][rid#88d4118/initial] [perdir S:/ssm-misc/remote-control/api/] trying to replace prefix S:/ssm-misc/remote-control/api/ with /remote-control/api/
[Thu Dec 04 00:37:31.417478 2014] [rewrite:trace1] [pid 5636:tid 1728] mod_rewrite.c(475): [client ::1:58668] ::1 - - [localhost/sid#f51730][rid#88d4118/initial] [perdir S:/ssm-misc/remote-control/api/] internal redirect with /remote-control/api/index.php [INTERNAL REDIRECT]
[Thu Dec 04 00:37:31.417478 2014] [rewrite:trace3] [pid 5636:tid 1728] mod_rewrite.c(475): [client ::1:58668] ::1 - - [localhost/sid#f51730][rid#88d7bb8/initial/redir#1] [perdir S:/ssm-misc/remote-control/api/] strip per-dir prefix: S:/ssm-misc/remote-control/api/index.php -> index.php
[Thu Dec 04 00:37:31.417478 2014] [rewrite:trace3] [pid 5636:tid 1728] mod_rewrite.c(475): [client ::1:58668] ::1 - - [localhost/sid#f51730][rid#88d7bb8/initial/redir#1] [perdir S:/ssm-misc/remote-control/api/] applying pattern '^' to uri 'index.php'
[Thu Dec 04 00:37:31.418478 2014] [rewrite:trace1] [pid 5636:tid 1728] mod_rewrite.c(475): [client ::1:58668] ::1 - - [localhost/sid#f51730][rid#88d7bb8/initial/redir#1] [perdir S:/ssm-misc/remote-control/api/] pass through S:/ssm-misc/remote-control/api/index.php
O que pode estar acontecendo aqui?