2016-06-18 3 views
0

Я создаю простой инструмент перенаправления для себя в PHP. Я собираюсь хранить коды, которые сопоставляются с их соответствующими URL-адресами в ассоциативном массиве, а затем перенаправлять всех, кто вводит этот код в свой URL.Apache mod_rewrite: переписать путь в строку запроса существующего файла

Я использую строки запроса для получения ввода (имя переменной и значение, которое является кодом), и я уже знаю, как сделать часть перенаправления работать с PHP. Проблема в том, что я не хочу, чтобы мои пользователи вводили знак вопроса, имя переменной, а затем знак равенства. Я бы хотел, чтобы они просто вводили путь, который будет преобразован в строку запроса, чтобы PHP мог обрабатывать перенаправление.

Мне было интересно, как я могу превратить путь (произвольный URL-адрес) в строку запроса существующего файла. Мне удалось легко найти противоположную задачу в Stack Overflow (.htaccess - Rewrite query string and redirect to directory), но я хочу, чтобы любой произвольный URL-путь (который не существует в каталоге) не передавался в строку запроса существующего файла. Я нашел пример того, что хотел (URL rewrite for converting path to querystring), но это было для нескольких строк запроса, и в этом случае мне нужен только один. Я не думаю, что последний вопрос, на который я ссылался, был успешно удовлетворен.

Как я могу перенаправить

https://www.example.com/r/blahblahblah 

в

https://www.example.com/r/index.php?r=blahblahblah 

с помощью .htaccess, так что я могу разобрать строку запроса в моем PHP файл?

ответ

0

Что-то вроде этого:

RewriteRule ^(.*)$ index.php?r=$1 [NC,L,QSA] 

На этом URL:

example.com/r/blahblahblah

От index.php:

print_r($_GET); 

Вернется это:

Array ([r] => blahblahblah) 

(Edit говоря это предполагает, что .htaccess находится в каталоге/г)

+0

Спасибо! Поскольку это более краткий ответ, который больше подходит для моего случая, я буду отмечать это как правильное. – jeffw

0
RewriteEngine On 
RewriteRule ^r/([a-zA-Z0-9]+)$ /r/index.php?r=$1 
+0

Спасибо, это было то, что я искал! Мне нужен был .htaccess в каталоге «/ r», поэтому я написал это вместо: «RewriteRule^(a-zA-Z0-9 +) $ index.php? R = $ 1' – jeffw

Смежные вопросы