Всем привет. У меня возникла проблема с ЧПУ ссылками.
У меня есть такие страницы как:
?page=admin
?page=admin&adminpage=users
?page=admin&adminpage=users&action=add
?page=admin&adminpage=news
?page=admin&adminpage=news&action=add
Вот полный код .htaccess:
RewriteEngine On
RewriteBase /
AddDefaultCharset UTF-8
ErrorDocument 401 /site-system/errors/401.php
ErrorDocument 403 /site-system/errors/403.php
ErrorDocument 404 /site-system/errors/404.php
ErrorDocument 500 /site-system/errors/500.php
#==============================================================
RewriteRule ^([^/]*)/$ /index.php?page=$1 [L]
#===========================NEWS===============================
RewriteRule ^([^/]*)/([^/]*)/$ /index.php?page=$1&url=$2 [L]
#==============================================================
#===========================ADMIN==============================
RewriteRule ^([^/]*)/([^/]*)/$ /index.php?page=$1&adminpage=$2 [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/$ /index.php?page=$1&adminpage=$2&action=$3 [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/$ /index.php?page=$1&adminpage=$2&action=$3&id=$4 [L]
#==============================================================
# RewriteRule ^logout/$ /site-system/functions/logout.php [L]
#==============================================================
############################################################################
#### Убираем слеши в конце URL для статических файлов (содержит точку) ####
############################################################################
RewriteCond %{REQUEST_URI} \..+$
# Если файл содержит точку.
RewriteCond %{REQUEST_FILENAME} !-d
# И это не директория.
RewriteCond %{REQUEST_FILENAME} -f
# Является файлом.
RewriteCond %{REQUEST_URI} ^(.+)/$
# И в конце URL есть слеш.
RewriteRule ^(.+)/$ /$1 [R=301,L]
# Исключить слеш.
############################################################################
#### Добавляем слеш(/), если его нет, и это не файл. ####
############################################################################
RewriteCond %{REQUEST_URI} !(.*)/$
# Если слеша в конце нет.
RewriteCond %{REQUEST_FILENAME} !-f
# Не является файлом.
RewriteCond %{REQUEST_URI} !\..+$
# В URL нет точки (файл).
RewriteCond %{REQUEST_URI} ^(.+)$
# В URL есть хоть один символы
RewriteRule ^(.*)$ $1/ [L,R=301]
# Добавляем слеш в конце.
Теперь вопрос. Почему когда я ввожу "/admin/users/", у меня по стути открывается главная страница админ панели "?page=admin". То же самое с /admin/news/', выводит главную страницу. А вот если я ввожу "/admin/users или news/add", то открывается нужная странца...
Вот еще прикреплю PHP код:
<?php
class admin extends engine_admin {
public function get_content() {
if (!isset($_GET['adminpage'])) {
echo 'test admin index';
} else {
if ($_GET['adminpage']) {
$page = $_GET['adminpage'];
if ($page == 'users') {
if (!isset($_GET['action'])) {
echo '
test 2 users list
';
} else {
if ($_GET['action']){
$action = $_GET['action'];
if ($action == 'add') {
echo '
test 2 add new user
';
}
}
}
} else if ($page == 'news') {
if (isset($_GET['action'])) {
echo '
test 3 news list
';
} else {
if ($_GET['action']){
$action = $_GET['action'];
if ($action == 'add') {
echo '
test 3 add new news
';
}
}
}
}
}
}
}
}