Autor Zpráva
IdemeNaHavaj
Profil
Ahoj
Ako má vyzerať rewriteRule ak chcem za / iba 1 slovo?
Napr. z
example.com/index.php?miestnost=zoznamka
ako urobiť adresu
example.com/zoznamka
?

Už som skúšal aj online generátor ale hádzalo mi to chybu Internal server error - prosím napíšte mi sem ten jeden riadok ako to má presne vyzerať aby to šlo, budem moc rád.
Ďakujem

edit: maximalne čo som dosiahol je example.com/zoznamka/ (nechcem tam to posledné /)
mám to takto
RewriteRule ^(.+[^/])/$ /index.php?room=$1 [L]
Dan Charousek
Profil
IdemeNaHavaj:
(nechcem tam to posledné /)
Si to otrimuj:

trim($adresa, "/");
IdemeNaHavaj
Profil
Dan Charousek:
Chcem aby to šlo aj otvoriť enterom priamo bez lomítka.
Dan Charousek
Profil
IdemeNaHavaj:
Omlouvám se, špatně jsem pochopil problém.
Jestli chceš jen text do prvního lomítka, tak by toto mohlo fungovat:
^([^\/]*

ale moc se mi to nezdá. Co s těmi zbylými řetězci?
Jestli je to tak, tak by se
.com/neco/asd vyhodnocovalo stejně jako .com/neco/ddd
IdemeNaHavaj
Profil
Dan Charousek:
Napíšeš mi to prosím presne? Ja totiž to čo mám (čo som písal vyššie) tak to mám vygooglené. A ak to zmením iba za to, čo si napísal tak to hádže internal server error.

Co s těmi zbylými řetězci?
žiadne iné niesú, bude len jeden string za lomítkom.
Dan Charousek
Profil
IdemeNaHavaj:
Tak vyber vše a otrimuj si to:

.htaccess
RewriteEngine On

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

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

index.php
echo trim($_GET['room'], "/");
xROAL
Profil
RewriteRule ^([^/]*)$ index.php?room=$1 [L] ti hádže chybu?
IdemeNaHavaj
Profil
Dan Charousek:
Nechcem to do php premennej, chcem aby to šlo s enterom normálne otvoriť bez posledného lomítka.

xROAL:
Ano. Toto som myslím že aj ja skúšal bez toho lomítka pred "$"
Dan Charousek
Profil
IdemeNaHavaj:
Dan Charousek:
Nechcem to do php premennej, chcem aby to šlo s enterom normálne otvoriť bez posledného lomítka.
Však ano, otevřeš adresu example.com/zoznamka a zobrazí se obsah z index.php?room=zoznamka
Jak jinak bys chtěl generovat ten obsah než na základě toho, co je za lomítkem.
IdemeNaHavaj
Profil
Dan Charousek:
Myslim ze som zle pochopil tu spravu pred tym, ze co dalsie retazce. Mam tam uz nastavenych viac pravidiel RewriteRule, asi preto mi to ^(.*) vypisuje znova internal server error.

Pochopil som to predtím zle, myslel som že myslíš, že adresa by mala viac retazcov a viac lomítok .com/a/b/c
Takže problém mám stále.. nejde to nejako normálne nastaviť?
xROAL
Profil
IdemeNaHavaj:
Ano. Toto som myslím že aj ja skúšal bez toho lomítka pred "$"
Osobne som to neskúšal, ale nevidím dôvod na to, aby tento regulár sám o sebe spôsoboval chybu.

Ostatne, čo ti bráni v použití obyčajného, všeobecného RewriteRule ^(.*)$ index.php?room=$1 [L]? Keď do adresy / nenapíšeš tak tam logicky nebude a všetko bude normálne fungovať. A ak tam to lomítko niekto napíše, tak sa ho môžeš v PHP zbaviť, alebo má človek smolu a uvidí 404.

Nemáš v .htaccess ešte niečo iné, čo by sa s týmto bilo?
IdemeNaHavaj
Profil
xROAL:
Nemáš v .htaccess ešte niečo iné, čo by sa s týmto bilo?

momentálne tam mám toto:

Options +FollowSymLinks -MultiViews -indexes

RewriteEngine on
RewriteBase /

RewriteRule ^login.html /login.php
RewriteRule ^register.html /register.php
RewriteRule ^blocked.html /blocked.php

RewriteRule ^(.+[^/])/$ /index.php?room=$1 [L] #toto je to problémové

a hneď pod tym asi 20 riadkov tohto (len vždy iná adresa, ale na rovnaký štýl):

RewriteRule ^_/room/([^/]*)/activate$ /actions/activate_room.php?code=$1 [L]

Všetkých ďalšich 20 pravidiel sa začína ^_/ teda by sa to nemalo byť. Či?
Dan Charousek
Profil
IdemeNaHavaj:
a hneď pod tym asi 20 riadkov tohto (len vždy iná adresa, ale na rovnaký štýl)

To je právě ono. Obecně se to dělá pomocí toho jednoho pravidla ( [#6] ) a obsah se includuje PHP scriptem.
IdemeNaHavaj
Profil
Dakujem myslim ze som to uz pochopil a funguje to

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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