it-swarm-eu.dev

Jak implementuji přepisování URL do svého souboru .htaccess?

Chtěl bych udělat nějaké přepsání URL (Proč? Viz tato otázka .), Takže místo toho, aby uživatelé viděli adresy jako

labouseur.com/course-compilers.html 

místo toho mohou jednoduše vidět a používat

labouseur.com/course-compilers

(Ještě lépe, možná bych to měl restrukturalizovat tak, aby to byly kurzy/kompilátory.)

Pro svůj web používám sdílený hostingový systém založený na Linuxu, takže nemám administrativní kontrolu nad serverem, ale mám kontrolu nad .htaccess. Odkazy, které jsem četl online, mi připadaly méně jasné, takže zde hledám trochu jasnosti a rady.

17
Alan

Ve skutečnosti byste mohli ze souborů na serveru odebrat soubor HTML a nastavit htaccess tak, aby byly doručeny jako soubory html, ale pravděpodobně to není to, co hledáte.

Udělej tohle :

RewriteEngine on
# Check this condition to ensure that it's not a directory.
RewriteCond %{REQUEST_FILENAME} !-d
# Check this condition to ensure that there's a file there
RewriteCond %{REQUEST_FILENAME}\.html -f
# Replace html with your file extension, eg: php, htm, asp
RewriteRule ^(.*)$ $1.html
13
Rizwan Kassim

Nejprve se ujistěte, že Apache má modul a že je povolen v souborech .htacces, poté přidejte:

RewriteEngine on

# Rewrite rules
RewriteRule ^/myoldsubfolder/(.*) /newfolder/$1 

Váš příklad by vyžadoval

RewriteCond %{REQUEST_URI} !-d
RewriteCond %{REQUEST_URI}\.html -f
RewriteRule ^/(([a-zA-Z0-9_]+)/?)$ /$1.html

Pro jednostupňovou strukturu adresářů a

RewriteRule ^/(([a-zA-Z0-9_]+)/?)+$ /$1.html

Pro víceúrovňovou strukturu.

Ale pozor

Pokud máte strukturu

/site/.htaccess
/site/subfolder/.htaccess
/site/subfolder/cats/.htaccess

Pravidla přepisování v podřízených souborech .htaccess budou relativní k jejich nadřazené složce a můžete se dostat do některých situací chaotický přepsat smyčku. Pokud je to možné, ujistěte se, že používáte RewriteCond, abyste jim zabránili.

3
Aiden Bell

Kromě výše uvedených odpovědí lze použít

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^([\w-]+)$ $1.html [L]

([\w-]+) Umožňuje písmena, číslice s pomlčkou (-).

(.*) přepíše každou žádost bez ohledu na to, což může impotovat další následující pravidla, která způsobují interní chybu serveru při přístupu.

2
Abhishek Gurjar

K dosažení tohoto cíle nemusíte používat soubor .htaccess. Jednoduše uspořádejte své soubory do adresářů a místo toho, abyste použili „labouseur.com/course-compilers.html“, stačí pojmenovat soubor index.html a vložit jej do adresáře nazvaného „kursové kompilátory“. Když potom přejdete na tento adresář, index se ve výchozím nastavení zobrazí, ale nebude se zobrazovat v adrese URL. Takže byste mohli jen napsat své odkazy jako „labourseur.com/course-compilers“ a vše bude v pořádku.

Není vyžadován žádný úspěch.

1
Joel Glovier