.htaccess переписать PHP $ _GET несколько страниц - PullRequest
1 голос
/ 25 августа 2011

.htaccess

    RewriteEngine On
    RewriteRule register index.php?mode=register
    RewriteRule login index.php?mode=login

index.php

    <?php
    if ( isset ( $_GET['mode']) && ( $_GET['mode'] == 'register' ) ) {
        include('includes/register.php');
    } elseif ( isset ( $_GET['mode']) && ( $_GET['mode'] == 'login' ) ) {
        include('includes/login.php');  
    }
    ?>

Это мой текущий метод (спасибо @TROODON).

Есть ли более простой способ, возможно, использовать массивы ключ-значение для хранения всех возможностей для различных страниц, которые будет вызывать index.php?

Спасибо

1 Ответ

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

Для вашего .htaccess вы можете сделать это:

RewriteEngine ON

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?mode=$1 [L,QSA]

Однако, не меняйте свой PHP-код на include, что бы вы ни получали от $_GET['mode']!Это позволит пользователям включать по желанию.

Вы можете настроить свой PHP-код следующим образом:

$pages = array("register" => "includes/register.php",
               "login"    => "includes/login.php");

if(isset($_GET['mode']) && $pages[$_GET['mode']])
    include $pages[$_GET['mode']];

PS: два RewriteCond гарантируют, что URL не существуетфайл или папка (т. е. если у вас есть папка images, то site.com/images все равно перейдет в эту папку вместо index.php?mode=images.

...