sashablashenkov
@sashablashenkov

Как превратить ссылку /help.php?page=somePage в /help/somePage? (apache mod_rewrite)?

Есть простой код на PHP, который берет из папки файлы и выдает их:

<?php
error_reporting(0);
$page = $_GET['page'];
if (file_exists('help-pages/'.$page.'.php')) {
  include('help-pages/'.$page.'.php');
} else {
  echo "not found";
}
?>

Надо сделать так, чтобы ссылки /help.php?page=somePage особой магией превратились в /help/somePage (вместо somePage может быть что-нибудь другое).

Как?

Посмотрел очень много статей по мод_рерайт, но мало чего понял. Все, что я сделал сам не работает.
  • Вопрос задан
  • 4168 просмотров
Решения вопроса 2
GeneMoss
@GeneMoss
void
В .htaccess:
RewriteEngine on
RewriteRule ^help/(.*)$ /help.php?page=$1
Ответ написан
Koa
@Koa
Вот как сделано у меня

Есть в корне файлы:

.htpaccess
AddDefaultCharset utf-8
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ ./index.php


setting.php
# Запуск
session_start();
header('Content-Type: text/html; charset=utf-8');
# Безопасное подключение (проверка)
defined('_JEXEC') or header("Location: /error/");
    
    # Функция: обработка URL
    function URL($numb){
        
        $url = explode("/", $_SERVER['REQUEST_URI']);
        return preg_replace("/[^a-z0-9]/","",$url[$numb]);
        
    }


index.php
# Безопасное подключение (установка кода)
	define('_JEXEC',1);
	
	# Инклюды
	include("settings.php");
	
	# Структура сайта
	switch(URL(1)){

		# Главная страница
		case "":
		include("pages/index.php");
		break;

		# Ошибка
		case "error":
		include("pages/error.php");
		break;
		
		# Страница по умолчанию (ошибка)
		default:
		include("pages/error.php");
		break;

	}


Обращаемся к функции URL() и проверяем где находимся. Т.е. если http://site.ru/help/ - инклюдим (pages/help.php) иначе (pages/error.php)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
hell0w0rd
@hell0w0rd
Просто разработчик
А зачем вам это нужно? Я никогда этого не понимал.
Ну напишите внутри php разбор $_SERVER['REQUEST_URI'] и все, в чем проблема?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы