Intereting Posts
Лучший способ рассказать о 3 или более последовательных записях fgetcsv () не читает арабские символы Как сохранить значение выбранного пользователем параметра из выпадающего списка выбора в базу данных mysql? PHP Использование запросов cURL и GET в URL-адресе Как создать многоязычный контент Pdf в PHP Ошибка при вызове хранимой процедуры через php. Литерал не соответствует строке формата Удаление дубликатов из массива php – Лучший способ определить глобальную константу (доступен во всех файлах) Почему MySQL-соединение блокируется из-за многих ошибок подключения? Вычисление N-го корня с помощью bcmath в PHP Почему PDO генерирует предупреждения, когда мы говорим, что это не делать? Расширение псевдонима пространства имен PHP до полной строки пространства имен Числа к римским номерам с php Как изменить корневой каталог www на WampServer 2.5 DOM PDF генерирует только 1 страницу pdf пропустить оставшееся содержимое

htaccess не переписывает url для моих запросов GET

Я использую следующий URL-адрес для ввода всех шаблонов страниц:

www.example.com/tournament/index.php?view=*

Я хочу переписать это

www.example.com/tournament/*

так

www.example.com/tournament/index.php?view=profile становится www.example.com/tournament/profile

а также

www.example.com/tournament/index.php?view=profile&id=testUser становится www.example.com/tournament/profile/testUser .

Я в настоящее время пытался:

 RewriteRule ^tournament/([^/]*)/([^/]*)$ index.php?view=$1&id=$2 RewriteRule ^tournament/([^/]*)/([^/]*)$ index.php?view=$1&id=$2 [L] RewriteRule ^tournament/([^/]*)/([^/]*)$ tournament/index.php?view=$1&id=$2 RewriteRule ^tournament/([^/]*)/([^/]*)$ tournament/index.php?view=$1&id=$2 [L] RewriteRule ^tournament/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ index.php?view=$1&id=$2 RewriteRule ^tournament/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ tournament/index.php?view=$1&id=$2 

но это не работает. У меня есть RewriteEngine On .

Следующая файловая структура:

 |public |->tournament |->templates |-> profile.php |->index.php |->.htaccess (with rewriting in) 

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

Редактировать index.php

 <?php include '../../includes/functions.php'; sec_session_start(); if(isset($_SESSION['username'])) { $user = new user($db, $_SESSION['user_id'], $_SESSION['username'], $_SESSION['lastActive']); } include INCLUDESPATH . 'form_actions.php'; include "headers/header.php"; include "headers/navbar.php"; echo '<div class="wrapper">'; $view = 'index'; if (!empty($_GET['view'])) { $tmp_view = basename($_GET['view']); if (file_exists("templates/{$tmp_view}.php")) { $view = $tmp_view; include "templates/{$view}.php"; } else { include "errors/404.php"; } } echo '</div>'; include "headers/footer.php"; ?> 

Solutions Collecting From Web of "htaccess не переписывает url для моих запросов GET"

Поскольку ваш htaccess находится в папке tournament , вы можете использовать его таким образом

 RewriteEngine On RewriteBase /tournament/ # Redirect /tournament/index.php?view=XXX to /tournament/XXX RewriteCond %{THE_REQUEST} \s/tournament/index\.php\?view=([^&\s]+)\s [NC] RewriteRule ^ %1? [R=301,L] # Redirect /tournament/index.php?view=XXX&id=YYY to /tournament/XXX/YYY RewriteCond %{THE_REQUEST} \s/tournament/index\.php\?view=([^&\s]+)&id=([^&\s]+)\s [NC] RewriteRule ^ %1/%2? [R=301,L] # Skip if existing file/folder RewriteCond %{REQUEST_FILENAME} -d [OR] RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^ - [L] # Internally rewrite them back RewriteRule ^([^/]+)$ index.php?view=$1 [L] RewriteRule ^([^/]+)/([^/]+)$ index.php?view=$1&id=$2 [L] 

Следующее правило может обрабатывать оба ваших URL:

 RewriteEngine on RewriteCond %{THE_REQUEST} /tournament/index.php\?view=([^&]+)&id=([^&\s]+) [NC] RewriteRule ^ /tournament/%1/%2? [L,R] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(?:tournament/)?([^/]+)/?(.*)/?$ /tournament/index.php?view=$1&id=$2 [NC,L]