0

重複の可能性:
私のウェブホストはURLの最後に?PHPSESSID=fgh2h45…を追加しています
Symfony2でPHPSESSIDを削除する方法

私は自分のウェブサイトをSymfony2で開発したので、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>

次に、上記のコードでPHPSESSIDを無効にすることに注意しますが、別の問題が発生します。私のWebサイトのすべてのURLにapp.phpが表示されます。

www.mysite.com/app.php/.....

だから私は何ができるのかわかりません、私は複数のRewriteRuleを使用したので、私は新しい問題を抱えていると思います。

4

2 に答える 2

5

削除するためにURLを書き換える代わりに、PHPSESSIDセッションにCookieを使用するようにphpを構成します。

php.ini

session.use_cookies=1
session.use_only_cookies=1
session.use_trans_sid=1

またはで.htaccess

php_flag session.use_cookies 1
php_flag session.use_only_cookies 1
php_flag session.use_trans_sid 1

または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);
?>

そして、最後になりましたが、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>

このように、PHPSESSID=smthパラメータのみが削除され、残りのクエリ文字列が渡されます。

于 2012-07-25T03:14:33.973 に答える
0

クエリ文字列からを削除するリダイレクトを実行する前に、URI に書き換えています。が書き換えられないように、前にそれを実行する必要があります。app.phpPHPSESSID%{REQUEST_URI}

下のすべてをこれに置き換えてみてくださいDirectoryIndex app.php

<IfModule mod_rewrite.c>
RewriteEngine On

# remove PHPSESSID first
RewriteCond %{QUERY_STRING} PHPSESSID=.*$ 
RewriteRule .* %{REQUEST_URI}? [R=301,L]

# rewrite to app.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]

</IfModule>
于 2012-07-25T03:14:21.357 に答える