Как настроить Apache (.htaccess?) Для использования mod_rewrite для передачи виртуального пути к файлу PHP? - PullRequest
0 голосов
/ 10 июня 2019

У меня есть скрипт, расположенный по адресу http://www.foo.bar/script, и я хотел бы использовать виртуальные пути для отправки данных в этот скрипт.Например, http://www.foo.bar/script/this/is/a/path передаст "this / is / a / path" в / script.Я хотел бы сделать это без изменения URL-адреса, который видит пользователь.

Я уже получил это для работы с Apache mod_rewrite, используя что-то похожее на то, что было предложено здесь htaccess mod_rewrite несколько путей для запроса строки .То, что я не смог сделать, это передать путь к сценарию без изменения URL-адреса, который видит пользователь.Таким образом, пользователь, который посещает http://www.foo.bar/script/stackoverflow/rocks, скрипт, находящийся в / script, получит / stackoverflow / rock в виде строки запроса или URI, но URL-адрес не изменится.Я знаю, что это не редкость, и, возможно, я использую неправильную терминологию при поиске ответа.Спасибо за внимание.

Одна идея, которую кто-то предложил:

RewriteEngine On
RewriteBase /
RewriteRule "script/(.*)" "https://www.foo.bar/script/?data=$1" [R,L]

Тем не менее, приведенное выше изменяет URL-адрес в браузере.Я не хочу выставлять "?"в строке запроса.

1 Ответ

0 голосов
/ 10 июня 2019

У меня нет точного кода, который вам нужен, но у меня есть кое-что, что я могу вам помочь. Приведенный выше пример с использованием rewrite_module перезапишет любой URL-адрес с расширением .php, а также примет имя страницы без .php и перенаправит на страницу pageName.php, близкое к тому, что вы хотите, имя, которое пишут пользователи, перенаправляя на нужный сценарий. , Кроме того, он также предлагает некоторую защиту от кросс-скриптинга в конце URL.

<IfModule rewrite_module>
   RewriteEngine On
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteRule ^([^\.]+)$ $1.php [NC,L]
   RewriteCond %{QUERY_STRING} ^(.*?)(?:%3C|%3E|&lt;|&gt;)(.*)$
   RewriteRule ^((.*)((?!([.]*p*h*p))\w+)) /$1?%1%2 [L,R=302,NE]
</IfModule>
...