Nll*_*Nll 0 apache .htaccess apache2 symfony
可能的重复:
我的网络主机正在添加 ?PHPSESSID=fgh2h45... 到 URL 的末尾
我如何在 Symfony2 中删除 PHPSESSID
我用 Symfony 2 开发了我的网站,所以我尝试从 URL 中删除 PHPSESSID,然后在 /web/.htaccess 中放入以下代码:
SetEnv SHORT_OPEN_TAGS 0
SetEnv REGISTER_GLOBALS 0
SetEnv MAGIC_QUOTES 0
SetEnv SESSION_AUTOSTART 0
SetEnv ZEND_OPTIMIZER 1
SetEnv PHP_VER 5_4
DirectoryIndex app.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
#remove PHPSESSID
RewriteCond %{QUERY_STRING} PHPSESSID=.*$
RewriteRule .* %{REQUEST_URI}? [R=301,L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
然后我备注上面的代码禁用了 PHPSESSID,但它产生了另一个问题,我的网站的所有 URL 中都出现了 app.php:
www.mysite.com/app.php/.....
Run Code Online (Sandbox Code Playgroud)
所以我不知道我能做什么,我想我遇到了新问题,因为我使用了多个 RewriteRule。
不是重写 URL 来 remove PHPSESSID,而是将php 配置为使用 cookie 进行会话:
在php.ini:
session.use_cookies=1
session.use_only_cookies=1
session.use_trans_sid=1
Run Code Online (Sandbox Code Playgroud)
或在.htaccess:
php_flag session.use_cookies 1
php_flag session.use_only_cookies 1
php_flag session.use_trans_sid 1
Run Code Online (Sandbox Code Playgroud)
或 in php- 在所有页面中包含的某个文件中,之前session_start():
<?php
ini_set("session.use_cookies", 1);
ini_set("session.use_only_cookies", 1);
ini_set("session.use_trans_sid", 1);
?>
Run Code Online (Sandbox Code Playgroud)
并且,最后但并非最不重要的,mod_rewrite无论如何让我们这样做:
<IfModule mod_rewrite.c>
RewriteEngine On
# first, remove PHPSESSID and redirect
RewriteCond %{QUERY_STRING} ^(.*)PHPSESSID=[^&]*(.*)$
RewriteRule .* %{REQUEST_URI}?%1%2 [R=301,L]
# then, silently rewrite everything to app.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
这样,只有PHPSESSID=smth参数被删除,查询字符串的其余部分被传递。
| 归档时间: |
|
| 查看次数: |
5105 次 |
| 最近记录: |