Получение значений в php при использовании правила перезаписи `.htaccess`

#php #regex #apache #.htaccess #mod-rewrite

#php #регулярное выражение #apache #.htaccess #мод-перезапись

Вопрос:

Получение значений в php при использовании .htaccess правила перезаписи

Я использую следующее правило

 RewriteEngine On
RewriteRule ^([^/]*)$ page.php?title=$1 [L]
  

Это означает, что оно создаст страницу, подобную view

(т.е.)

www.mywebsite.com/contact

www.mywebsite.com/blog

Но как я могу получить значения, переданные в URL, и отобразить их внутри страницы, используя метод Get echo "Page content is ".$_GET['title'];

Пока я передаю значение в URL, например www.mywebsite.com/view,

Это просто отображение содержимого страницы page.php

Какую ошибку я делаю и как я могу это исправить?

Ответ №1:

Некоторые URL-адреса, которые не нужно переписывать, переписываются. Вероятно, вы хотите изменить свое правило следующим образом:

 RewriteEngine On
RewriteRule ^([^/.] )/?$ page.php?title=$1 [L]
  
  • [^/.] Гарантирует, что в пути нет точки
  • Гарантирует наличие хотя бы одного символа
  • /? Допускает необязательную косую черту в конце

Комментарии:

1. Если у меня уже есть папка с именем blog и если я передаю значение www.mywebsite.com/blog это повлияет правильно, как я могу избежать этого? (пока я переписываю второй%{blog} ! -d ) все равно это не сработало

2. if i pass the value www.mywebsite.com/blog it will affect right, How can i escape from this ? Не понимаю, что вы здесь имеете в виду, не могли бы вы, пожалуйста, рассказать подробнее?

3. Если у меня есть папка с именем blog , она не работает, если я использую www.mywebsite.com/blog