Мод переписать и получить запрос - PullRequest
0 голосов
/ 01 октября 2019

Я пытаюсь очистить мои URL, используя mod_rewrite в моем файле .htaccess. Можно ли переписать исходящий GET-запрос?

http://local.thisapp.com/earnings?tab=total&title=74bcfbdce5ba4fe585e0

до

http://local.this.com/earnings/total/74bcfbdce5ba4fe585e0

Кажется, что он идет в противоположном направлении. Вот примерное правило:

RewriteRule ^/?earnings/(total|monthly|episode|sales)/([a-z0-9]{20}|0)/?$ /earnings.php?tab=$1&title=$2 [NC,L,QSA]

1 Ответ

0 голосов
/ 01 октября 2019

Поскольку это, похоже, проблема с тем, какой URL отображается в расположении браузера, вы можете либо отредактировать свою веб-страницу так, чтобы URL выглядел так, как вы этого хотите, либо вы можете сделать перенаправление, чтобы браузер загрузил полностьюдругой URL. Иногда это может иметь некоторые неблагоприятные последствия, поскольку вы добавляете дополнительные сегменты пути к своему URL-адресу, и это буквально нарушит все ваши относительные ссылки, включая любые сценарии или CSS, которые могут быть связаны с использованием относительной ссылки.

Концепция с перенаправлением / перезаписью заключается в том, что вся перезапись происходит на стороне сервера, тогда как перенаправление происходит на стороне браузера.

В этом конкретном случае вы хотите перенаправить браузер для загрузки нового URL, еслион видит URL со строкой запроса и внутренне переписывает его обратно в запрос со строкой запроса.

RewriteEngine On

# redirect the browser if an incoming request has the query string
RewriteCond %{THE_REQUEST} ^GET\ /earnings\?tab=([^&]+)&title=([^&\ ])
RewriteRule ^ /earnings/%1/%2/ [L,R]

# internally rewrite the request back to the query string
RewriteRule ^/?earnings/(total|monthly|episode|sales)/([a-z0-9]{20}|0)/?$ /earnings.php?tab=$1&title=$2 [NC,L,QSA]
...