Используя .htaccess, как зарезервировать данные GET при перенаправлении на одну страницу? - PullRequest
0 голосов
/ 05 января 2019

Я хочу иметь url/main.php для перенаправления на url/index?page=main. Тем не менее, я не могу понять, как сохранить данные GET. То есть url/main.php?foo=bar перенаправляет на url/index?page=main, когда я хочу перенаправить на index.php?page=main&foo=bar

Вот что у меня сейчас есть:

Options +FollowSymLinks
RewriteEngine on
# Redirect /page.php, /page.html, and /page.htm to /page
RewriteRule ^(.+)\.(php|html|htm)\/*$ /$1 [R,L]
# If the page is not a file or directory
RewriteCond %{REQUEST_FILENAME} !-s
RewriteCond %{REQUEST_FILENAME} !-d
# Internally redirect /page to /index.php?page=page
RewriteRule ^(.*?)/?$ /index.php?page=$1 [NC,END]
# Redirect /index to /
Redirect /index /

1 Ответ

0 голосов
/ 05 января 2019

Эта ссылка почти на 100% создана для вашего вопроса, и я уверен, что вы найдете, что она делает именно то, что вы ищете.

https://httpd.apache.org/docs/current/rewrite/flags.html#flag_qsa

Это правило

RewriteRule "/pages/(.+)" "/page.php?page=$1" [QSA]

С флагом [QSA] будет отображен запрос для / pages / 123? One = two to /page.php?page=123&one=two. Без флага [QSA] тот же запрос будет сопоставлен с /page.php?page=123 - то есть существующим Строка запроса будет отброшена.

...