Autor | Zpráva | ||
---|---|---|---|
Misho3 Profil * |
#1 · Zasláno: 14. 4. 2011, 20:03:38
Zdravím
prosím Vás mohli by ste mi sem napísať ako mám presne urobiť .htaccess súbor aby to robilo nasledovné? Mám adresu: http://www.nieco.nieco.com/index.php?p=hlas&id=1&t=a a chcem aby to vyzeralo: http://nieco.nieco.com/hlas/1/a a su pripady kedy je len /index.php?p=stranka -> /stranka Ďakujem |
||
l564 Profil |
#2 · Zasláno: 14. 4. 2011, 20:06:28
Neřeší se to náhodou zde?
|
||
Misho3 Profil * |
#3 · Zasláno: 14. 4. 2011, 20:16:55
ja neviem ale tam to moderátor zastavil ako vidím...
Neporadí niekto? pls |
||
Taps Profil |
#4 · Zasláno: 14. 4. 2011, 20:54:53
Misho3:
inspiruj se na http://mike.treba.cz/mod_rewrite-a-hezke-url-dil-ii/ |
||
Tirus Profil |
#5 · Zasláno: 14. 4. 2011, 21:50:16
pomocí frameworku co jsem začal využívat z blackhole, je htacces takovýto
php_flag magic_quotes_gpc off php_flag register_globals off Options -Indexes RewriteEngine on # route all requests to index.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?route=$1 [L,QSA] vše co je za adresou domény je v $_GET['route'] to si rozparsuješ a tak můžeš i dosáhnou pěkných URL |
||
Časová prodleva: 8 let
|
|||
alp71 Profil |
#6 · Zasláno: 19. 3. 2019, 14:34:33
Snažím se také udělat hezké odkazy a inspiroval jsem se před časem mj. i touto diskusí.
Ke svému webu také připoji vlastní CRM ve složce "!adm", se kterou ale mám teď (nevím proč až po létech) problémy :-( V .htaccess mám tento kód: RewriteEngine on RewriteBase / RewriteRule ^css/.*$ - [PT] RewriteRule ^lib/.*$ - [PT] RewriteRule ^img/.*$ - [PT] RewriteRule ^js/.*$ - [PT] RewriteRule ^obr/.*$ - [PT] RewriteRule ^doc/.*$ - [PT] RewriteRule ^web/.*$ - [PT] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-l RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^!adm/(.*)$ !adm/index.php?url=$1 [L,QSA] RewriteRule ^(.*)$ index.php?url=$1 [L,QSA] Vlastní web funguje OK, ale když chci aplikovat CRM ve složce !adm (viz. předposlední řádek), tak mi to hází chybu 404 nebo chybu 500, když dám i do složky !adm .htaccess, který vypadá (zkráceně) takto: RewriteEngine on RewriteBase /!adm/ RewriteRule ^css/.*$ - [PT] RewriteRule ^lib/.*$ - [PT] # ... a spoustu dalších podobných RewriteRule ^(.*)$ index.php?url=$1 [L,QSA] Vypadá to, jako by server přestal brát složku "!adm" jako skutečnou, či co. Když to testuji na localhostu, tak mi to funguje, ale na hostingu to hází zmíněné chyby :-( Něco mi někde uniká, ale nedaří se mi přijít na to kde a co? Předem díky za jaýkoliv tip. |
||
Kajman Profil |
#7 · Zasláno: 19. 3. 2019, 16:09:17
Příště si založte vlastní vlákno. S tímto to nesouvisí!
Zkusil bych se podívat do error logu apache, tam bude chyba 500 lépe popsána. Můžete zkusit - vykřičník v reguláru raději ošetřit zpětným lomítkem - přidat flag NE - poradit se s hostingem, zda nezakázali (např. nějakou aktualizací web serveru) adresy obsahující vykřičník |
||
Kajman Profil |
#8 · Zasláno: 20. 3. 2019, 07:54:16
A ten 13.-18. řádek bych možná přepsal na
RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^!adm/(.*)$ !adm/index.php?url=$1 [L,QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [L,QSA] |
||
alp71 Profil |
#9 · Zasláno: 21. 3. 2019, 10:39:25
Děkuji moc za rady a omlouvám se za odchylku od tématu. Byl jsem zabrán do svého problému, uvědomil jsem si to až po odeslání. Můžete-li, tak toto vlákno přehoďte.
Nicméně... Pomohlo mi to jen částečně. Ale uvědomil jsem si, že vlastně potřebuju jen oddělit adresář "!adm" (pozn.: S tím otazníkem problém není, to jsem si otestoval). Tj.: Když bude obsah REQUEST_URI začínat "!adm", tak se předá řízení do skutečného podadresáře !adm. Ve všech ostatních případech se to přepíše pravidlem RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]
Ale teď tápu, jak to napsat :-( Pravidlo (z ř.2 od Vás) jsem zkoušel postupně přepisovat na: RewriteRule ^!adm(.*)$ - [L,QSA] nebo RewriteRule ^!adm/(.*)$ !adm/$1 [QSA,L] atd.,
ale funguje to jen když je v REQUEST_URI pouze "!adm". V momentě, kdy jsou tam další údaje (např.: "!adm/menu" nebo "!adm/menu.php" nebo i "!adm/?ulr=něco" < což požadovaný tvar) tak mi to hází chybu 404 (od .htaccess z rootu, k .htaccess v podadresáři !adm se to nedostane). |
||
Kajman Profil |
#10 · Zasláno: 21. 3. 2019, 11:03:00
Co je v .htaccess v adresáři !adm? On by měl mít totiž před hlavním přenost.
|
||
alp71 Profil |
Ano, s tím souhalsím a na této skutečnosti jsem to měl postavený.
.htacces tam obsahuje to, co jsem uvedl výš, tedy: RewriteEngine on RewriteBase /!adm/ RewriteRule ^css/.*$ - [PT] RewriteRule ^lib/.*$ - [PT] # ... a spoustu dalších podobných RewriteRule ^(.*)$ index.php?url=$1 [L,QSA] |
||
Kajman Profil |
#12 · Zasláno: 21. 3. 2019, 15:19:14
V tom případě by se přepisovací pravidla z nadřazeného adresáře neměla vůbec provádět pro url začínající na !adm/, protože apache nejprve najde pravidla v ní. Zkuste přidat podmínku na neexistující soubor, tedy před poslední řádek.
RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [L,QSA] To by mohlo dříve dělat chyby 500 (zazyklení), ale to byste zjistil v tom error logu. Možná ale máte zamezení cyklení v těch spoustě dalších podobných pravidel, které nechcete poslat. A je to normální hosting s běžnou konfigurací domén, nebo to je pošahané jako u wedosu a všechny domény chodí do jednoho místa a tam se to podle domény rozhazuje dále rewrite pravidly? |
||
alp71 Profil |
#13 · Zasláno: 21. 3. 2019, 17:23:06
Ve "spoustě dalších podobných pravidel" je jen toto :-)
RewriteRule ^css/.*$ - [PT] RewriteRule ^lib/.*$ - [PT] RewriteRule ^../lib/.*$ - [PT] RewriteRule ^img/.*$ - [PT] RewriteRule ^../img/.*$ - [PT] RewriteRule ^js/.*$ - [PT] RewriteRule ^../js/.*$ - [PT] RewriteRule ^fge/.*$ - [PT] RewriteRule ^fonts/.*$ - [PT] RewriteRule ^ckeditor/.*$ - [PT] RewriteRule ^imgeditor/.*$ - [PT] A, pravda, ještě řádek Options -Indexes Zkouknul jsem si teď obsahy .htaccess, u webů které mám na jiných hostingcích a tam mi to s tímhle pravidlem maká. Zkusil jsem si to teď tady opakovaně povolit a zaremovat a je to opravdu tím. Omlovám se, příště nebudu kód zkracovat. Tak snad pomůže tato inforamce někomu dalšímu, že Options může někdy, někde (tady se jednalo o pipni.cz) způsobit vyhazování 500. Ještě jednou díky !!! |
||
Kajman Profil |
#14 · Zasláno: 21. 3. 2019, 18:52:34
Mohlo to být tím, že na tom hostingu není možné nastavení Indexes měnit v .htaccess, to by způsobilo chybu 500 a v error logu by bylo popsáno, z jakého důvodu.
|
||
Časová prodleva: 5 let
|
0