#apache #mod-rewrite
#apache #мод-перезапись
Вопрос:
Я работаю над веб-сайтом, созданным с использованием PHP.
Среда разработки — Windows (с использованием xampp)
Страницы веб-сайта отображаются в соответствии со значением переменной «page», которую мы передаем в index.php файл в качестве переменной url.
т. е. http://example.com/index.php?page=xyz
Приведенный выше URL-адрес указывает на xyz.php
файл
Имеется около 50 страниц (может быть увеличено в будущем).
Я хочу, чтобы мои URL-адреса были такими
http://example.com/xyz
чтобы это сработало, я написал следующее .htaccess rule
в файле .htaccess (в корневой папке проекта)
RewriteRule ^([^/]*)$ /index.php?page=$1 [L]
Но это вообще не работает.
Другой URL-это http://example.com/index.php?page=abcamp;name=gauravamp;id=10amp;page_no=2
Я хочу, чтобы этот URL отображался следующим образом
http://example.com/abc/gaurav/10/2
Существует много разных форм URL-адреса, который я привел в качестве примера, но переменная page всегда будет присутствовать в URL-адресе.
Если я предоставлю правило для обоих вышеуказанных URL-адресов, то ничего не сработает (отображается внутренняя ошибка сервера 500)
Пожалуйста, помогите мне написать это правило.
Ответ №1:
Попробуйте
RewriteRule ^([^/] )$ index.php?page=$1 [L]
Итак, вместо звезды. Он будет использовать все символы, пока не найдет косую черту (/)
Комментарии:
1. Спасибо за вашу помощь, но это не работает ошибка внутреннего сервера 500.
2. @Gaurav Sharma Извините, моя ошибка. Я изменил свой код в сообщении выше. Это работает в моей локальной настройке. Я настоятельно рекомендую, чтобы это был последний RewriteRule в вашем htaccess.
3. Теперь значение переменной url «страница» полностью потеряно. Теперь это значение является статическим для всех страниц, т.Е. index.php.. Также приведенное выше правило не работает для этого URL » example.com/xyz/gaurav/10 »
4. Если вы прочтете мой ответ, вы увидите, что он будет использовать все символы, пока не найдет косую черту. Если вам нужно больше переменных, вам нужно их добавить. RewriteRule ^([^/] )/([^/] )/$ index.php?page = $ 1 amp; var2 = $ 2 и т.д.
5. и что произойдет, когда переменных станет меньше? т.е. я упомянул 4 переменные в правиле перезаписи, и я предоставляю только 2 из них.