Я пытаюсь переписать свои URL, чтобы удалить index.php?но я изо всех сил пытаюсь заставить его работать.Ближайший ответ, который я могу получить, - вот ответ: удалить знак вопроса из 301 перенаправления с помощью htaccess, когда пользователь вводит старый URL-адрес
Мне нужно преобразовать URL-адреса в красивые URL-адреса при выходе.и переписать их обратно на правильный URL-адрес при входе. Структура URL-адресов выглядит следующим образом:
https://sub.domain.com/index.php?/folder1/folder2-etc
Использование кода из указанного ответа приводит к двойной переадресациикосая черта:
https://sub.domain.com//folder1/folder2-etc
Правила перезаписи, которые я использую из указанного ответа:
RewriteEngine On
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteRule ^(.*?)index\.php$ /$1 [L,R=301,NC,NE]
RewriteCond %{THE_REQUEST} \s/+\?([^\s&]+) [NC]
RewriteRule ^ /%1? [R=301,L]
# internal forward from pretty URL to actual one
RewriteRule ^((?!web/)[^/.]+)/?$ /index.php?$1 [L,QSA,NC]
Я подозреваю, что знаю, как решить первый бит,но я изо всех сил пытаюсь понять второе правило для внутреннего форварда.
Кроме того, мне интересно, является ли это лучшим способом сделать это.В настоящее время я использую сервер Apache за обратным прокси-сервером Nginx.Буду ли я лучше делать переписывание на стороне Nginx и внутреннего форварда на Apache?
РЕДАКТИРОВАТЬ:
Осложнение: я заметил дополнительную структуру, чтобы усложнить вещи.Некоторые URL-адреса, по-видимому, имеют https://sub.domain.com/picture.php?/folder1/folder2-etc
. Для них я был бы весьма рад сохранить «изображение» и просто удалить .php?бит.
Я предполагаю, что для первого бита мне нужно сделать что-то вроде следующего:
RewriteCond %{THE_REQUEST} \s/+index\.php\?/([^\s&]+) [NC]
RewriteRule ^ /%1? [R=301,L]
RewriteCond %{THE_REQUEST} \s/+picture\.php\?/([^\s&]+) [NC]
RewriteRule ^(.*)$ /picture/%1 [R=301,L]
Но не знаю, с чего начать с противоположного ....то есть преобразование симпатичных URL обратно в стандарт.Поможет ли мне объяснить следующий раздел?
^((?!web/)[^/.]+)/?$ /index.php?$1 [L,QSA,NC]