Как обработать URL без указания параметров

Мне было интересно, могу ли я обработать URL-адрес без указания параметров. Например: http://www.example.com/Sometext_I_want_to_process

Я не хочу использовать: http://www.example.com/index.php?text=Sometext_I_want_to_process

Сайт должен перенаправить на другую страницу после обработки.

Какой у меня выбор языка?


person Community    schedule 14.09.2009    source источник


Ответы (2)


Я бы предложил использовать mod_rewrite от apache (аналогичная функциональность есть и на других веб-серверах), чтобы переписать URL-адрес, чтобы он был параметром. Например, с текстовым параметром, который вы используете, вы можете использовать следующие правила mod_rewrite для получения параметра.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico # Want favicon.ico to work properly
RewriteRule ^(.*)$ index.php?text=$1 [L,QSA]

Затем вы просто получаете доступ к параметру в скрипте, как обычно.

<?php     
$stuff = $_GET['text'];
// Process $stuff 
person codeincarnate    schedule 14.09.2009

Вы можете сделать это, используя Apache mod_rewrite.
Очевидно, это означает, что она должна быть включена, что слишком часто бывает не так по умолчанию.

Например, на веб-сайте я использую это в файле .htaccess :

RewriteEngine on
RewriteCond %{REQUEST_URI}  !^/index.php
RewriteRule ^(.*)$ /index.php?hash=$1   [L]

Это перенаправляет все, например www.mysite.com/152 на www.mysite.com/index.php?hash=152

И тогда в моем PHP-коде я могу просто использовать $_GET :

if (isset($_GET['hash'])) {
    if (is_numeric($_GET['hash'])) {
        // Use intval($_GET['hash']) -- I except an integer, in this application
    }
}

В вашем случае вы, вероятно, захотите заменить «hash» на «text», но это уже должно помочь вам приблизиться к решению ;-)

person Pascal MARTIN    schedule 14.09.2009