HTTP novirzīšana uz HTTPS novirzīšanu: URL pārrakstīšana IIS 8 Windows Server 2012 5. daļā: SSL sertifikāts

Man tas ir manā .htaccess fails:

RewriteEngine on RewriteRule ^images/chart\.png$ /static/images/chart.png [L,R=301] RewriteRule ^images/artwork/(.+).png /static/artwork/$1.jpg [L,R=301] # codeigniter RewriteCond $1 !^(index\.php|static|images|admin|user_guide|sitemap\.xml\.gz|robots\.txt) RewriteRule ^(.*)$ /index.php/$1 [L] 

Daļai CodeIgniter ir jāignorē images un static mapes. Tomēr, kad es atveru example.com/images/chart.png Es saņemu CI 404 lapu. Pārējie 301 novirzīšana darbojas labi.

Nevar saprast šo, vai kādam ir ideja?

Šeit notiek tas, ka jūsu pārrakstīšana faktiski darbojas, bet R = 301 izraisa otro atkārtojumu, kas izraisa 404.

Pieprasījums nāk images/chart.png un jūsu pārrakstīšanas noteikumi darbojas. Kad tas atbilst jūsu pirmajam noteikumam, tas novirza 301. Šis 301 novirzīšana liek pārlūkprogrammai izdot a jauns pieprasījums priekš /static/images/chart.png.

Tātad jaunais pieprasījums nonāk jūsu serverī, un pārrakstīšanas kārtulas tiek izpildītas vēlreiz. Šoreiz pieprasījums neatbilst jūsu pielāgotajiem noteikumiem augšpusē, un tas tiek iekļauts CodeIgniter kārtulā. Tā kā jaunais URL sākas ar “statisks”, tas atbilst KI kārtulai un novirza uz /index.php?/static/images/chart.png. Tā kā CI nav ne jausmas, kā ar to rīkoties (es pieņemu), tas izmet 404, lai informētu lietotāju, ka nevar atrast resursu.

Ko jūs vēlaties darīt, ir atjaunināt KI kārtulu, lai pievienotu šādus nosacījumus:

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

Tas liks mod_rewrite izpildīt kārtulu tikai tad, ja pieprasījums nav burtiski esošam failam (!-f) vai direktoriju (!-d).

Pēc šī atjauninājuma veikšanas pirmais noteikums izraisīs to pašu novirzīšanu /static/images/chart.png bet, tā kā šis fails burtiski pastāv šajā ceļā, KI noteikumi atstās to mierā, un netiks veikta jauna pārrakstīšana. Tad serveris normāli apkalpos attēlu.

  • Paldies par atsaucību, bet tas nav pareizi - pašreizējais RewriteCond jau izslēdz gan attēlus, gan statiskos direktorijus. Man tomēr izdevās to salabot.
  • 1 Sasodīts .. mans sliktais. Es nepamanīju, ka RewriteCond bija izņemot tie direktoriji. Piedod par to.

Beigās man izdevās to novērst, noņemot attēlu direktoriju no CI RewriteCond klauzula. (Joprojām neesat 100% pārliecināts, kāpēc tas darbojās, jo pieprasījums pēc images/chart.png nevajadzēja pat nokļūt CI daļā.)

  • Es gribētu derēt, ka jūs, iespējams, redzat atbildi kešatmiņā. Un noņemot images bija vienkārši sakritība. (?)

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

noderīga informācija