.htaccess Perdeu a SESSÃO após o redirecionamento do cabeçalho usando mod_rewrite [L, QSA] com a sessão iniciada

2

Versão do PHP 5.4.41 Apache versão 2.2.15 Versão 2.6.32 do Linux CentOS 6.6

Eu tenho um código que não é redirecionado corretamente. Há muito código e configuração, então tentarei mantê-lo o mais simples possível. Minha sessão é perdida continuamente após um redirecionamento de cabeçalho. Não há erros e não há avisos ... o redirecionamento continua bem. Eu session_start (); e var_dump [$ _ SESSION] na página após o redirecionamento para obter NULL. Se eu session_start e despejo logo antes do redirecionamento, a sessão despeja bem. Eu estou supondo que tem algo a ver com o mod_rewrites htaccess soltando a sessão entre as páginas, mas não tenho certeza de como corrigi-lo. Eu continuo lendo para adicionar [L, QSA], mas isso não está ajudando. As sessões funcionam bem para páginas simples no mesmo servidor que não usam mod_rewrites.

Eu acho que o domínio é o mesmo, vendo como vai: link link

Eu chmoded & chorei recursivamente toda a pasta www para que o apache tivesse todas as permissões e possuísse tudo no site.

O arquivo .htaccess se parece com:

RewriteCond %{REQUEST_URI} !=/web/[a-z0-9]{6}/index.php
RewriteCond %{REQUEST_URI} !error [NC]
RewriteCond %{REQUEST_URI} !css [NC]
RewriteCond %{REQUEST_URI} !images [NC]
RewriteCond %{REQUEST_URI} !js [NC]
RewriteRule ^([a-z0-9]{6})/(.*)$ /web/index.php?id=$1&page=$2 [L,QSA]

link

DocumentRoot "/var/www/html"

link

Alias /web /var/www/html/website/
<Directory "/var/www/html/website/">
    AllowOverride All
    Order allow, deny
    Allow from all
</Directory>

no output_buffering do php.ini está ativado.

session.cookie_path = /var/www/html/session
session.use_cookies = 1
session.use_only_cookies = 1

O redirecionamento de cabeçalho é semelhante ao valor $ url que contém "home", substituindo o login por home no URL:

header("Location: $url",true,302);
exit();

Quando faço o curl -i na home page

Eu recebo:

HTTP/1.1 302 Found
Date: Wed, 10 Jun 2015 21:54:38 GMT
Server: Apache/2.2.15 (CentOS)
X-Powered-By: PHP/5.4.41
Set-Cookie: PHPSESSID=08079c815224b0b129d566dc274e0081; path=/web/someus; domain                                                                                  =127.0.0.1; secure
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=ebde43200c30ad6ac18e88b8bfb71371; path=/web/someus; domain                                                                                  =127.0.0.1; secure
Set-Cookie: PHPSESSID=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/web/                                                                                  webdmo; domain=127.0.0.1; secure; httponly
Location: login
Content-Security-Policy: default-src 'self' 'unsafe-eval' 'unsafe-inline'
X-Content-Security-Policy: default-src 'self' 'unsafe-eval' 'unsafe-inline'
X-WebKit-CSP: default-src 'self' 'unsafe-eval' 'unsafe-inline'
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
X-Frame-Options: DENY
Strict-Transport-Security: max-age=631138519; includeSubDomains
Content-Length: 0
Connection: close
Content-Type: text/html; charset=UTF-8

Quando faço curl -i na página de login que redireciona para a página inicial

Eu recebo:

HTTP/1.1 200 OK
Date: Wed, 10 Jun 2015 21:58:21 GMT
Server: Apache/2.2.15 (CentOS)
X-Powered-By: PHP/5.4.41
Set-Cookie: PHPSESSID=d79a57eaabb9a41e99f4e0dda202a598; path=/web/someus; domain=127.0.0.1; secure
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Security-Policy: default-src 'self' 'unsafe-eval' 'unsafe-inline'
X-Content-Security-Policy: default-src 'self' 'unsafe-eval' 'unsafe-inline'
X-WebKit-CSP: default-src 'self' 'unsafe-eval' 'unsafe-inline'
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
X-Frame-Options: DENY
Strict-Transport-Security: max-age=631138519; includeSubDomains
Content-Length: 2890
Connection: close
Content-Type: text/html; charset=UTF-8

Acho interessante que o domínio 127.0.0.1 esteja seguro em um e não no outro - não tenho certeza se isso tem algo a ver com isso.

    
por Kevin Nabity 10.06.2015 / 22:32

2 respostas

0

Descobri isso. Eu acho que foi uma combinação de problemas. As duas respostas (usando um host localhost e tendo cookies.path misturados) foram provavelmente uma parte dele, juntamente com uma configuração SSL a> soltando a sessão no redirecionamento. Muito obrigado pela ajuda!

    
por 11.06.2015 / 21:37
0

Você está confundindo session.cookie_path que está definido como /var/www/html/session com session.save_path .

Veja as definições dos links fornecidos acima. Você provavelmente deseja que session.save_path seja /var/www/html/session e deixe o caminho do cookie sozinho.

O caminho do cookie da sessão dirá ao navegador que esses cookies só devem ser usados para determinados caminhos de URL em seu site.

Por exemplo, se eu definir um cookie com session.cookie_path de /web/someus e depois tentar visitar /web/somethingelse , o cookie definido anteriormente não será enviado porque não está no caminho /web/someus .

Se você deixar o caminho do cookie como o padrão / , o cookie da sessão será enviado após o redirecionamento.

    
por 11.06.2015 / 01:32