Обработка просмотров страниц с помощью htaccess и php - PullRequest
1 голос
/ 15 августа 2011

В настоящее время я добавляю следующий параметр url:

www.somesite.com/?page_type=view

Мой php-скрипт использует это для определения, какой вид страницы загрузить:

if (isset($_GET['page_type'])) {
    $page_type = $_GET['page_type'];
    $this->pageType($page_type);
} else {
    $this->home();
}

Я хотел бы иметь возможностьиспользуйте следующий URL для достижения того же:

www.somesite.com/view

Поэтому мне нужно перенаправить все запросы в index.php, сохраняя исходный ввод URL.

Тогда я могу просто использовать

$_SERVER['REQUEST_URI']

чтобы узнать имя страницы.

Нужен совет htaccess,

Заранее спасибо!

Ответы [ 4 ]

2 голосов
/ 15 августа 2011

Вы можете использовать что-то вроде:

<IfModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php?url=$1 [QSA,L]
</IfModule>

Это перенаправит все запросы, которые не разрешаются, на реальные файлы / каталоги на ваш index.php. ?url=$1 будет содержать запрос, но это может быть необязательным в вашем случае, так как вы все равно можете просто получить его от $_SERVER['REQUEST_URI'].

Я оставил строку RewriteBase (закомментированную), так как раскомментирование может помочь с настройками сервера.

1 голос
/ 15 августа 2011

Другой вариант, который у вас есть, - это просто настроить файл htaccess для перенаправления любых 404 (неразрешимых) запросов в файл индекса с установленным флагом, например:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php?sef_rewrite=1 [L,QSA]

Отсюда вы можете использовать доступ PHPк информации $ _SERVER ['REQUEST_URI'], чтобы разобрать все в PHP и вручную вставить переменные в суперглобальный переменный $ _REQUEST, чтобы «привязать» ваши дружественные для поисковых систем ссылки в приложение.

Это дает вамгораздо больше масштабируемости, чем простое принудительное использование формата / pagetypevar для всех URL.

Что произойдет позже, когда вы захотите вложить страницы в подкатегории?/ info / about_us, / info / contact_us Что произойдет, если вы захотите сохранить в URL другие переменные, такие как элементы на странице или нумерацию страниц?/ products / 1_My_supercool_item, / products / 2_Another_item

Использование системы, которая перенаправляет все неразрешенные запросы в платформу приложения, и позволяет платформе приложения выполнять преобразование URL-адресов, что обеспечит вам максимальный контроль и максимальную масштабируемость.

1 голос
/ 15 августа 2011
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule /^(.*)$ /index.php?page_type=$1 [L]
1 голос
/ 15 августа 2011

Используйте правило переписывания следующим образом:

RewriteEngine On
RewriteRule /(home|view) index.php?page_type=$1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...