Autor Zpráva
unlucky
Profil
Mám soubor test.php. Chci, když zadám test.net, tak otevře soubor test.php. Zároveň chci, aby soubor test.php, nebo všechny soubory php nešly otvírat přes URL:

když soubor .php - přesměrování někam jinam
když soubor .net - přečte soubor .php

ZKusil jsem hodně, ale fungovalo buď přesměrování nebo jenom čtení. Když tam je přesměrování, tak i když zadám do url .net tak to přesměruje

RewriteEngine On

# SEO name read as php based on file extension
RewriteRule ^(.+)\.net$ $1.php [L,NC]

RewriteCond %{REQUEST_URI} ^(.+)\.php$
RewriteRule ^(.+)\.php$ /admin/example.html [R=301,L]

nebo

RewriteEngine On

# Redirect .php to example.html, excluding .net files
RewriteCond %{REQUEST_URI} !\.net$
RewriteCond %{REQUEST_URI} ^(.+)\.php$
RewriteRule ^(.+)\.php$ /admin/example.html [R=301,L]

# SEO name read as php based on file extension
RewriteRule ^(.+)\.net$ $1.php [L,NC]

zkusil jsem hodně kombinací, i chatgpt, ale nic nefungovalo. Poradí mi někdo?
Kajman
Profil
RewriteEngine On

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(.+)\.php$ - [L,F]

RewriteRule ^(.+)\.net$ $1.php [L,NC]

Viz phpfashion.com/hadanka-znate-mod_rewrite
unlucky
Profil
Kajman:
mockrát děkuju za kód, funguje to krásně.

Nevíš ještě, jak udělat výjimky? Třeba povolit php soubory v adresářích /includes/ a /libs/

zkusil jsem:

RewriteCond %{REQUEST_URI} !^/libs/.*\.php$
RewriteRule ^ - [L]
Kajman
Profil
RewriteEngine On

#v pripade shody, preskoc jedno dalsi pravidlo RewriteRule
RewriteRule ^(includes|libs)/ - [S=1]
 
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(.+)\.php$ - [L,F]

...
unlucky
Profil
Kajman:
děkuji, zapomněl jsem na S
unlucky
Profil
vyreseno
Kajman
Profil
unlucky:
vyreseno

Co a jak?
unlucky
Profil
narazil jsem na bug, že kdyz uživatel zadá doména.cz/složka/ beze názvu souboru, tak ono to automaticky vybere index. V tomto případě index.php, který je zakázaný

zkusil jsem
DirectoryIndex index.net

ale to nefungovalo. Tak jsem musel klasicky redirect

RewriteCond %{REQUEST_URI} ^/admin/$
RewriteRule ^(.*)$ index.net [L]

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0