Position actuelle: Accueil> Derniers articles> Résoudre le problème que Output_Add_rewrite_var ne peut pas réécrire correctement l'URL

Résoudre le problème que Output_Add_rewrite_var ne peut pas réécrire correctement l'URL

gitbox 2025-05-29

1. Introduction au principe de travail de la sortie_add_rewrite_var

output_add_rewrite_var est une fonction intégrée en PHP qui est utilisée pour ajouter automatiquement une variable de requête spécifiée et sa valeur à toutes les URL de sortie. L'utilisation courante est la suivante:

 <?php
session_start();
output_add_rewrite_var('PHPSESSID', session_id());
?>

Cette fonction analysera toutes les URL dans le contenu de sortie de la page et ajoutera automatiquement le paramètre phpSessid = xxxx .


2. Raisons courantes pour lesquelles la réécriture d'URL ne peut pas être correctement réécrite

  1. Le tampon de sortie n'est pas allumé
    output_add_rewrite_var dépend du mécanisme de tampon de sortie de PHP. Si le tampon de sortie n'est pas activé, la fonction ne peut pas capturer le contenu de sortie pour le remplacement.

  2. Le format URL n'est pas standardisé ou en codage des problèmes <br> Si l'URL de la page n'est pas dans un format HTTP ou HTTPS standard, ou a des caractères spéciaux, output_add_rewrite_var peut ne pas être correctement identifié et traité.

  3. Les URL générées dynamiquement sont utilisées dans la page
    Certaines URL sont générées dynamiquement ou épissées ultérieures via JavaScript, et output_add_rewrite_var ne peut pas percevoir ces modifications lorsqu'elles sont traitées du côté du serveur.

  4. L'interruption d'en-tête HTTP envoyée ou de sortie existe <br> Si la page a envoyé une sortie avant d'appeler la sortie_add_rewrite_var , la fonction peut ne pas être remplacée correctement.


3. Explication de la solution détaillée

1. Allumez et utilisez correctement la mise en mémoire tampon de sortie

Assurez-vous que la mise en mémoire tampon de sortie est activée dans le code et appelez la sortie_add_rewrite_var à l'emplacement approprié, par exemple:

 <?php
ob_start();
session_start();
output_add_rewrite_var('PHPSESSID', session_id());
// Sortie de contenu de la page
echo '<a href="http://gitbox.net/path/page.php">Cliquez pour accéder</a>';
ob_end_flush();
?>

Cela garantit que la fonction capture correctement la sortie et ajoute des paramètres.

2. Paramètres d'épissage manuel comme alternative

Si output_add_rewrite_var ne peut pas répondre aux exigences, vous pouvez ajouter manuellement les paramètres lors de la génération de l'URL:

 <?php
session_start();
$sessionId = session_id();
echo '<a href="http://gitbox.net/path/page.php?PHPSESSID=' . urlencode($sessionId) . '">Cliquez pour accéder</a>';
?>

Bien qu'il soit gênant, c'est le moyen le plus direct et le plus efficace.

3. Utilisez Apache ou Nginx pour aider les paramètres à passer

Pour les situations où la réécriture d'URL est plus compliquée, vous pouvez combiner la configuration du serveur pour réaliser la livraison automatique des ID de session, tels que les règles .htaccess d'Apache:

 RewriteEngine On
RewriteCond %{QUERY_STRING} !PHPSESSID=
RewriteRule ^(.*)$ $1?PHPSESSID=%{HTTP:Cookie} [QSA,L]

Cela réduit la dépendance au niveau du PHP.

4. Évitez de compter sur output_add_rewrite_var lors de la génération de URL dynamiquement en JavaScript

Pour les liens générés dynamiquement, vous pouvez ajouter manuellement les paramètres pendant la génération ou passer les informations de session via AJAX.


4. Résumé

  • Assurez-vous que le tampon de sortie est activé pour vous assurer que la sortie_add_rewrite_var peut capturer correctement la sortie de la page.

  • L'URL a besoin de spécifications de format pour éviter la reconnaissance spéciale de la fonction d'interférence des caractères.

  • Pour les URL dynamiques, évitez de compter sur une apprentissage automatique sur le côté du serveur et utilisez l'épissage frontal ou manuel.

  • La combinaison des règles de réécriture du serveur améliore la stabilité de la livraison des paramètres d'URL.

Ce n'est que de cette manière que nous pouvons nous assurer que lors de l'utilisation de la sortie_add_rewrite_var , l'URL peut être correctement réécrite, les paramètres sont passés normalement et l'anomalie de la fonction de page peut être évité.