Версия, подходяща за принтиране

Оригинлната версия може да видите тук

Mod_rewrite и PHP
Публикувано от Arlekino на: 20.10.2008 11:55
Здравейте,
в момента правя една php архитектура и се опитвам да направя следното:

example.com/index.php/products/shoes/sandals/123

<?php
class Products extends Controller {

    function shoes($sandals, $id)
    {
        echo $sandals;
        echo $id;
    }
}
?>

1-вата част от url-то да ми е името на контролера (класа)
2-рата името на метода, който да извикам
3 и 4 да са ми параметри.

сътворил съм това:
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?rt=$1 [L,QSA]

как точно трябва да е .htaccess за да мога да предавам и параметри?

Публикувано от dinamic на: 20.10.2008 12:27
Ако приемем, че контролера ти е 'rt', action-а ти е 'at' и параметрите са 'p1' и 'p2',
мисля че така трябва да ти изглежда .htaccess-а:

CODE
1
2
3
4
5
6
7
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond
%{REQUEST_FILENAME} !-d

RewriteRule
^(.+/.+/.+/.+)$ index.php?rt=$1&at=$2&p1=$3&p2=$4 [L]
RewriteRule ^(.+/.+/.+)$ index.php?rt=$1&at=$2&p1=$3 [L]
RewriteRule ^(.+/.+)$ index.php?rt=$1&at=$2 [L]
RewriteRule ^(.*)$ index.php?rt=$1 [L]

Не съм го пробвал, тествай и ми кажи дали е станало :)

Публикувано от Arlekino на: 20.10.2008 14:48
мерси за отговора, но не се получава, дори това което работеше спря :(

Публикувано от dinamic на: 22.10.2008 16:05
Предполагам че това се получава поради факта че ти всъщност не използваш mod_rewrite. Линка който си дал най-горе в поста си, всъщност разчита на index.php да си handle-не параметрите.

За да ти сработи, пробвай с нещо подобно:

example.com/products/shoes/sandals/123

Няма да е лошо да си видиш var_dump на $_GET, за да определиш кой параметър като какъв ти идва. Също, другия път когато искаш помощ, няма да е зле да дадеш малко повече информация различна от 'не работи'. Например, съобщението за грешка (ако има такова) би било от полза.

ЕДИТ: Пробвах правилата при мен и наистина не работят, но тези работят:

CODE
1
RewriteRule ^(.+)\/(.+)\/(.+)\/(.+)$ index.php?pr=$1&at=$2&p1=$3&p2=$4 [L]

Това мнение е редактирано от dinamic на 22.10.2008 20:31
Публикувано от Arlekino на: 23.10.2008 14:52
Мерси много, оправих ги :)


MYTECH.BG