Autor Zpráva
Josef Přerovský
Profil
Zdravím :)

V htaccess mám:
RewriteRule ^profile/(.*)$ profile.php?nick=$1 [QSA]

A u zobrazení mám:
<?php
//We check if the users ID is defined
if(isset($_GET['nick']))
{
    $nick = mysql_real_escape_string($_GET['nick']);
    //We check if the user exists
    $dn = mysql_query('select * from users where nick="'.mysql_real_escape_string($_GET['nick']).'"');
    if(mysql_num_rows($dn)>0)
    {
        $dnn = mysql_fetch_array($dn);
        //We display the user datas
?>
...

Funguje v případě, když mám odkaz: profile.php?nick=nick a potřeboval bych, aby to fungovalo, když zadám profile/nick

Dokaže někdo poradit? Děkuji :)
Andrej.B
Profil
Zapnut logovanie na rewrite, co to vobec robi - httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritelog
inak je dobre zapnut doplnanie lomitka... Cize:
profile/nick/ bude rewritovat na profile.php?nick=nick


RewriteEngine on
RewriteRule ^(.+[^/])$ /$1/ [R=301]
RewriteRule ^profile/([a-z-]+)/$ profile.php?nick=$1 [QSA,L]

Moj priklad funguje len na pismena... Ta premenna nick=jozko je vlastne ([a-z-]+)/$ profile.php?nick=$1 cize /profile/jozko vy davate v priklade profile/nick=jozko

este by som vyskusal, ci vobec funguje rewrite na jednoduchom riadku
RewriteRule profile\.html profile.php
a potom pustit stranky ako localhost/vas_projekt/profile.html
Ikki
Profil
RewriteEngine on
RewriteRule ^profile/(.*)$ profile.php?nick=$1 [QSA]

Takhle to určitě fungovat musí, tedy pokud tvůj odkaz k souboru není jiný, nemáš zakázaný .htaccess, nebo ho nemáš třeba v jiné složce.
Andrej.B
Profil
Josef Přerovský:
 $nick = mysql_real_escape_string($_GET['nick']);
    //We check if the user exists
    $dn = mysql_query('select * from users where nick="'.mysql_real_escape_string($_GET['nick']).'"');

A v tom selecte z DB nemusite zase escapovat premeneu $_GET['nick'] , staci pouzit premennu $nick... A zbavte sa mysql , pouzivajte mysqli rozsirenia or PDO...
$conn = new mysqli($localhost, $user, $password, $databaza);
$nick = mysqli_real_escape_string($conn,$_GET[nick]); // kde $conn je vase pripojenie do DB 
Josef Přerovský
Profil
S proměnnou id to fungovalo dobře bez problému. Mrknu na to. A vyzkousim vše možné

Ikki:
Tak přesně to mám.
Josef Přerovský
Profil
Takže, v profile.php mám:
<?php
//We check if the users ID is defined
if(isset($_GET['nick']))
{
    $conn = new mysqli($db_server, $db_user, $db_pass, $db_name);
    $nick = mysqli_real_escape_string($conn,$_GET['nick']);
    //We check if the user exists
    $dn = mysql_query('select * from users where nick="'.mysql_real_escape_string($nick).'"');
    if(mysql_num_rows($dn)>0)
    {
        $dnn = mysql_fetch_array($dn);
        //We display the user datas
?>

V htaccess souboru mám:
RewriteEngine On

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^.]+)$/    /$1.php    [L]

RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^([^.]+)$/    /$1.html    [L]

RewriteRule ^profile/([a-zA-Z0-9]+)/$ profile.php?nick=$1 [QSA,L]

A vyhodí mi to:
Not Found
The requested URL /profile/nejakejmeno454 was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

Apache/2.4.37 (Ubuntu) Server at majnlist.eu Port 80



A když dám domena/profile/tester tak mě to presmeruje na: domena/404.php/
A vyhodí File not found.
Andrej.B
Profil
v novom Apache 2.4 nieje mozne pouzivat .htaccess /aspon vo VirtualHost/, je potreba Rewrite davat do kontajnera v httpd.conf, alebo pouzit VirtualHost httpd-vhosts.conf... Vzdy treba restartovat server...



DocumentRoot "f:/www/localhost"
<Directory "f:/www/localhost">

    Options Indexes FollowSymLinks

    AllowOverride None

    Require all granted
</Directory>
Josef Přerovský
Profil
Mám to na hostingu crew.sk
Josef Přerovský
Profil
na doméně
Ikki
Profil
RewriteEngine On
RewriteBase /

RewriteRule ^([a-zA-Z0-9\-]+)$ $1.php
RewriteRule ^profile/(.*)$ profile.php?nick=$1 [QSA]
ErrorDocument 404 /404

Tohle bohatě postačí a na crew to 100% funguje.

A jen tak mezi námi - nehonil bych tady příspěvky kopírováním cizích řešení, pokud sám potřebuješ pomoci s každou prkotinou a základními věcmi.
Josef Přerovský
Profil
Super. Díky moc :)
Davex
Profil
Andrej.B:
v novom Apache 2.4 nieje mozne pouzivat .htaccess /aspon vo VirtualHost/
Používat .htaccess v Apache 2.4 samozřejmě lze. Oproti verzi 2.2 se pouze změnilo výchozí nastavení z AllowOverride All na AllowOverride None, což .htaccess vypíná. V kontextu „directory“ jde opět volbu přenastavit.
Andrej.B
Profil
Davex:
super diky... pri prvom spusteni Apache a hrani sa mi davalo Internal Error a po gugleni som nasiel , ze treba davat rewrite rule priamo do kontainera kde je ulozeny projekt. napr. k virtualhostu test.sk ako to mam terazw

<Directory "f:/www/_vhost/test.sk">    
RewriteEngine on
RewriteRule ^(.+[^/])$ /$1/ [R=301]

RewriteRule ^([a-z-]+)/$ index.php?akcia=$1 [QSA,L]

</Directory>

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0