Mod_rewrite, php и файл .htaccess

Я пишу небольшую CMS, чтобы лучше понять, как они работают, и узнать кое-что новое о PHP. Однако я столкнулся с проблемой.

Я хочу использовать mod_rewrite (хотя, если у кого-то есть лучшее решение, я готов его попробовать) для создания хороших чистых URL-адресов, поэтому site.com/index.php?page=2 может вместо этого быть site.com/tools

Насколько я понимаю, мне нужно изменять мой файл .htaccess каждый раз, когда я добавляю новую страницу, и именно здесь я сталкиваюсь с проблемой, мой PHP продолжает говорить мне, что я не могу обновить его, потому что у него нет разрешений. Небольшой фрагмент chmod показывает, что даже с разрешениями 777 он не может этого сделать, я что-то упустил?

Мой источник инструкций mod_rewrite в настоящее время - эта страница здесь, если он важен / полезен.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
5
0
4 787
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Один из подходов - переписать все в сценарий обработки.

RewriteEngine on
RewriteBase /

# only rewrite if the requested file doesn't exist
RewriteCond %{REQUEST_FILENAME} !-s 

# pass the rest of the request into index.php to handle     
RewriteRule ^(.*)$ /index.php/$1 [L]

так что если у вас есть запрос к http: // ваш сервер / foo / bar /

на самом деле вы получаете запрос к http: //вашсервер/index.php/foo/bar - и вы можете оставить index.php, чтобы решить, что делать с / foo / bar (используя $ _SERVER ['PATH_INFO'] -Том)

Вам нужно только изменить .htaccess в первый раз. Все будущие запросы на несуществующие файлы можно будет обрабатывать в PHP.

Вы также можете найти документы для mod_rewrite полезным, но не усложняйте его или приготовьтесь потерять много сна и выслеживать скрытые ошибки.

Возможно, стоит объяснить, что вы можете получить '/ foo / bar' из чего-то вроде $ _SERVER ['PATH_INFO']

Tom Haigh 06.11.2008 01:29

Ваш PHP должен по вполне очевидным причинам не иметь возможности изменять .htaccess. Даже если это сработает, я не уверен, что это разумно.

Как насчет более абстрактной настройки правил mod_rewrite? Определите свой общий шаблон URL, как вы хотели бы его использовать. Например:

/object/action/id

Затем напишите набор правил, которые перенаправляют HTTP-запросы на страницу PHP, которая, в свою очередь, принимает решение, какую страницу следует запустить (например, путем включения соответствующего сценария PHP).

RewriteRule ^/(\w+)/?(\w+)?/?(\d+)?$ /index.php?object=$1&action=$2&id=$3 [nocase]

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

Другие вопросы по теме