Dariet to, lai augs augtu ātrāk 1000 reizes Gaisa atzarošana DIY eksperimentu hacks

Es gribētu nedaudz pārrakstīt URL (kāpēc? Skatiet šo jautājumu.) Lai lietotāji neredzētu adreses, piemēram,

labouseur.com/course-compilers.html 

viņi tā vietā var vienkārši redzēt un izmantot

labouseur.com/course-compilers 

(Vēl labāk, varbūt man vajadzētu to pārstrukturēt tā, lai tie būtu kursi / sastādītāji.)

Es savai vietnei izmantoju Linux balstītu koplietošanas mitināšanas pakalpojumu, tāpēc man nav servera administratīvās kontroles, bet es tomēr kontrolēju .htaccess. Tiešsaistē lasītās atsauces man šķita mazāk skaidras, tāpēc es šeit meklēju nelielu skaidrību un padomu.

  • Ņemiet vērā, ka tas nav kaut kas jūs tikai darīt servera konfigurācijā (.htaccess). Svarīgs pirmais solis ir faktiski mainīt vietrāžus URL savā lietojumprogrammā, pretējā gadījumā jūs saņemsiet daudz nevajadzīgu novirzīšanu (vai satura dublikātu).

Jūs faktiski varētu noņemt .html no servera failiem un iestatīt htaccess iestatījumus, lai tie tiktu pasniegti kā html faili, taču tas, iespējams, nav tas, ko meklējat.

Dari šo :

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 
  • Šeit ir vairāk sarežģītības, it īpaši, ja jūs uztrauc dublēta satura problēmas. Izmantojot iepriekšminēto kārtulu, jūsu lapas joprojām būs pieejamas no vecajiem URL.

Vispirms pārliecinieties, vai apache ir modulis un vai tas ir atļauts .htacces failos, pēc tam pievienojiet:

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

Jūsu piemērs prasītu

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

Viena līmeņa direktoriju struktūrai un

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

Daudzlīmeņu struktūrai.

Bet esi uzmanīgs

Ja jums ir struktūra

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

Pārrakstīšanas likumi bērnam .htaccess faili būs salīdzinoši ar vecāku mapi, un jūs varat iekļūt dažos nekārtīgs pārrakstīt cilpas situācijas. Pārliecinieties, ka izmantojat RewriteCond lai tās apturētu, ja jūs varat!

  • Vai jūs domājat sīkāk aplūkot šo pēdējo punktu (izmantojot RewriteCond, lai apturētu cilpas)?

Kā papildinājumu iepriekš minētajām atbildēm var izmantot

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

([\w-]+) Atļauj burtus, ciparus ar defisi (-).

(.*) neatkarīgi no tā pārrakstīs katru pieprasījumu, kas var impotēt citus šādus noteikumus, izraisot iekšēju servera kļūdu, piekļūstot.

  • Jūsu RewriteRule modeli ir uzlabojums salīdzinājumā ar pieņemto atbildi uz konkrēto jautājumā sniegto piemēru, tomēr tas neizdosies saskaņot ar vispārīgāku gadījumu, ja ir vairāk nekā viens ceļa segments, piem. /path/to/course-compilers. Iekļaujiet L karodziņu, lai mazinātu ietekmi uz šādiem noteikumiem. Kamēr (.*) modelis ir nevajadzīgi vispārīgs, maz ticams, ka tas radīs nopietnas problēmas stāvoklī pārbauda, ​​vai fails pastāv.

Lai to paveiktu, nav jāizmanto .htaccess fails. Vienkārši strukturējiet failus direktorijos un tā vietā, lai izmantotu "labouseur.com/course-compilers.html", vienkārši nosauciet failu index.html un ievietojiet to direktorijā ar nosaukumu "course-compilers". Pēc tam, kad norādāt uz šo direktoriju, indekss tiek noklusēts pēc noklusējuma, taču tas netiks parādīts vietrādī URL. Tātad jūs vienkārši varat uzrakstīt savas saites kā "labourseur.com/course-compilers", un viss būs labi.

Nav nepieciešama .htaccess.

strādāja par jums: Charles Robertson | Vēlies ar mums sazināties?