Мне нужно выражение .htaccess, чтобы использовать вторую переменную get или получить переменную get по имени. В настоящее время мой mod_rewrite изменяет URL-адрес, чтобы удалить имя файла index.php и изменить переменную GET pageName, чтобы она выглядела просто как имя файла.
Теперь мне нужна вторая переменная GET, но в настоящее время она даже не распознает переменные get после первой перезаписи, поэтому я хотел бы, чтобы mod_rewrite обрабатывал вторую переменную, которая будет 'blogpage = 1' (1 будет страницу блога, на которой вы сейчас находитесь), чтобы она выглядела так:
*********.co.uk/PageName/2
вместо этого
*********.co.uk/PageName?blogpage=2
Поскольку в настоящее время это не работает, сценарий PHP просто считает, что переменная отсутствует, и возвращает значение NULL.
Это мои текущие условия mod_rewrite:
RewriteCond %{REQUEST_fileNAME} !-d
RewriteCond %{REQUEST_fileNAME} !-f
RewriteRule ^([^/\.]+)/?$ index.php?pageName=$1
Apache заменит всю строку запроса, если в правиле перезаписи указана новая. Чтобы добавить вместо этого, используйте Флаг QSA, как отмечено в документация по mod_rewrite:
Изменение строки запроса
По умолчанию строка запроса передается без изменений. Однако вы можете создать URL-адреса в строке подстановки, содержащей часть строки запроса. Просто используйте вопросительный знак внутри строки подстановки, чтобы указать, что следующий текст следует повторно вставить в строку запроса. Если вы хотите стереть существующую строку запроса, завершите строку подстановки только вопросительным знаком. Чтобы объединить новые и старые строки запроса, используйте флаг [QSA].
Итак, если вы измените свой код на
RewriteCond %{REQUEST_fileNAME} !-d
RewriteCond %{REQUEST_fileNAME} !-f
RewriteRule ^([^/\.]+)/?$ index.php?pageName=$1 [QSA]
он также должен пересылать старую строку запроса.
Чтобы выполнить вторую перезапись, просто добавьте другое правило с другой группой захвата.
RewriteCond %{REQUEST_fileNAME} !-d
RewriteCond %{REQUEST_fileNAME} !-f
RewriteRule ^([^/\.]+)/([0-9]+)$ index.php?pageName=$1&blogpage=$2 [QSA,L]
RewriteCond %{REQUEST_fileNAME} !-d
RewriteCond %{REQUEST_fileNAME} !-f
RewriteRule ^([^/\.]+)/?$ index.php?pageName=$1 [QSA]