Я использую несколько вариантов инструкций php if для анализа содержимого на основе того, какой файл запрашивается, например /index.php
(я использую nginx и php-fpm)
<?php if (preg_match('#^/(articles/|index\.php|$)#', $_SERVER['REQUEST_URI']) === 1): ?>
<?php if ($_SERVER['SCRIPT_NAME'] == '/index.php'): ?>
Проще говоря, он работает, если запрос не основан на строке запроса, например /index.php?135897
. Когда это происходит, он больше не видит файл как index.php
, и поэтому он неправильно анализирует содержимое.
Как я могу заставить эти операторы if подсчитывать строки запроса как один и тот же файл?
Использовать parse_url()
$scriptName = parse_url($_SERVER['SCRIPT_NAME'], PHP_URL_PATH);
<?php if ($_SERVER['SCRIPT_NAME'] == '/index.php'): ?>
strpos
. Проверьте, не ложно ли оно (!==
).