Нужна помощь для репликации функции перенаправления .htaccess mod_rewrite в php, как Wordpress - PullRequest
0 голосов
/ 22 июля 2011

Мы все знаем, что WordPress имеет простой код .htaccess, как показано ниже ПереписатьEngine на 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]

Но если я перенаправлю все запросы в index.php, я думаю, что становится довольно громоздко обрабатывать каждое переписывание в php. В настоящее время я имею в виду логику, например, поддерживать таблицу БД со всеми допустимыми перенаправлениями. Но все же я не знаю, как обрабатывать правила лайков ([0-9] +).

Если кто-то реализовал что-то подобное раньше или имеет в виду логику, не могли бы вы мне помочь в этом вопросе

Единственная цель, которую я делаю, это потому, что я хочу гибкости в добавлении / удалении категорий в меню моего сайта. Я не хочу каждый раз заходить на .htaccess и редактировать его везде. Я хочу создать больше как CMS, где пользователь может добавлять категории удаления

Ответы [ 2 ]

1 голос
/ 22 июля 2011

Я бы предложил настроить маршрутизацию на основе php. Основная идея заключается в том, что вы делаете что-то вроде этого:

RewriteEngine On

# skip all files with extensions other than .html
# this way if you want you can append the .html to dynamic pages
# which wont really exist as a file
RewriteCond %{REQUEST_URI} \..+$
RewriteCond %{REQUEST_URI} !\.html$
RewriteRule .* - [L]

// redirect everything to your front controller
RewriteRule ^(.*)$ index.php [QSA,L]

Обратите внимание, что вы просто заставляете каждый тег перейти к index.php, но вы не переписываете ни одну из переменных или что-либо еще. Это потому, что вы будете решать, что на основе шаблона URL с php. Для этого вам нужно внедрить роутер. Обычно маршрутизатор принимает запрос и сопоставляет его с шаблоном, а затем определяет любые параметры на основе шаблона.

Существуют библиотеки, которые могут сделать это для вас. Например Zend_Controller_Router.

1 голос
/ 22 июля 2011

Я не понимаю вопроса, WordPress уже обрабатывает все это для вас.Разве вы не имеете в виду, что вы не используете WordPress?В этом случае да, вы можете сделать это в любом случае.Какую структуру URL вы хотите?Вы можете написать правило следующим образом:

RewriteRule ^category/(.*)$  categories.php?cat=$1 [L]

Чтобы сделать URL-адрес, например, domain.com/category/dogs, переписать на domain.com/categories.php?cat=dogs.Очевидно, вы можете настроить это по своему вкусу и написать еще несколько похожих правил для тегов, записей и т. Д.

Обработка маршрутизации в php была бы более динамичным и «элегантным» решением.Вы можете попробовать использовать фреймворк, такой как CodeIgniter, он будет автоматически управлять маршрутами и упрощать определение пользовательских маршрутов.Вероятно, лучше, чем написать кучу правил .htaccess.

...