Man vajag kādu papildu kodu .htaccess fails, kas konfigurē šo HTTP pieprasījumu arī HTTPS!

 RewriteEngine on RewriteCond %{HTTP_HOST} ^(.*)\.example\.com RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}/sponsor/%1/$1 [L,NC,QSA] Options +FollowSymlinks  

Mana problēma: tagad tā kļūst /sponsor tagu tikai tad, ja es ievadu piemēru ar http:

LABI:

  • Tas darbojas: http://subdomain.example.com rezultātā http://subdomain.example.com/sponsor/subdomain.

Slikti:

  • Tas nedarbojas: https://subdomain.example.com rezultātā https://subdomain.example.com/.

man vajag .htaccess pārrakstīt, tas automātiski liek /sponsor TAG arī HTTPS vietrāžos URL.

ATJAUNINĀT: Šeit ir mans .htaccess fails:

# BEGIN WordPress  Options +FollowSymlinks RewriteEngine On RewriteCond %{HTTP_HOST} ^(.*)\.example\.com [OR,NC] RewriteCond https://%{HTTPS_HOST} ^(.*)\.example\.com [NC] RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}/sponsor/%1/$1 [L,NC,QSA] Options +FollowSymlinks RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]  # END WordPress 

  • Jūsu ievietotais kods to nedara. Lūdzu, ievietojiet visu .htaccess failu. Jūsu ievietotā koda rezultātā radīsies “novirzīšanas cilpa” - tātad, šķiet, ka tā ir kaut kas cits notiek šeit? Tas arī neatšķir HTTP un HTTPS, tāpēc atkal kaut kas cits notiek šeit, ja redzat citu atbildi. Jūsu ievietotais kods (pat ja tas darbosies) nedarīs jūsu norādīto novirzīšanu “LABA” - tāpēc vēlreiz kaut kas cits šeit notiek.
  • Šeit ir vairāk jums: # BEGIN WordPress Opcijas + FollowSymlinks RewriteEngine On RewriteCond% {HTTP_HOST} ^ (. *) \. Piemērs \ .com [OR, NC] RewriteCond https: //% {HTTPS_HOST} ^ (. *) \. Piemērs \ .com [NC] RewriteRule ^ (. *) $ https: //% {HTTP_HOST}% {REQUEST_URI} / sponsors /% 1 / $ 1 [L, NC, QSA] Opcijas + FollowSymlinks RewriteEngine On RewriteBase / RewriteRule ^ index \ .php $ - [L] RewriteCond% {REQUEST_FILENAME}! -F RewriteCond% {REQUEST_FILENAME}! -D RewriteRule. /index.php [L] # END WordPress
  • Man vienkārši nepieciešams / sponsor / current apakšdomēns katram TYPED URL pārlūkprogrammā. Arī http: // un https: // URL.
  • Es rediģēju jūsu jautājumu un pievienoju jūsu koda izgāztuvi. Izņemot "izskatīties nekārtībā", iespējams, ka dažas rakstzīmes tiek izlaistas no displeja, it īpaši regex - tāpēc, lūdzu, pārbaudiet, vai manā rediģēšanā nav kļūdu kopēšanas / ielīmēšanas gadījumā.
RewriteCond %{HTTP_HOST} ^(.*)\.example\.com [OR,NC] RewriteCond https://%{HTTPS_HOST} ^(.*)\.example\.com [NC] RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}/sponsor/%1/$1 [L,NC,QSA] 

Nedaudz atšķiras no sākotnēji ievietotajām direktīvām, tomēr otrais nosacījums nekad nesakritīs, tāpēc rezultāts ir tāds pats.

Bet, kā norādīts manā komentārā, tas radīs "novirzīšanas cilpu", un tas, iespējams, nevarētu izraisīt nevienu no novirzīšanas atbildēm, kuras norādījāt jautājumā ("laba" vai "slikta"). Vai nu jūs redzat atbildi kešatmiņā, vai .htaccess (vai mod_rewrite) nav iespējots, un WordPress pati veic šo novirzīšanu ?! (Lai gan, domājams, jums ir iespējoti WordPress "diezgan" URL?)

Ņemiet vērā, ka jūsu RewriteRule aizstāšana virkne dublē URL ceļu gan URL ceļa priekšpusē (%{REQUEST_URI}) un beigās (ar $1 backreference) - tātad tas izjauktu arī visu citu, izņemot dokumenta sakni (tas ir viss, ko jūs, šķiet, pārbaudāt savā jautājumā).

Tāpat nekad nevajadzētu pievienot savas direktīvas WordPress kodu blokam - pretējā gadījumā WordPress "mēģinās" pārrakstīt jūsu kodu, kad tas tiks atjaunināts.

Jums vajadzētu pievienot savas direktīvas pirms # BEGIN WordPress sadaļā.

Lai veiktu nepieciešamo novirzīšanu, jums tā vietā būs nepieciešams:

RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com [NC] RewriteRule !^sponsor/ https://%{HTTP_HOST}/sponsor/%1%{REQUEST_URI} [R,L] 

ATJAUNINĀT: Noņemiet aizmuguri $ uz RewriteRule modeli. ti. Kas bija !^sponsor/$ vajadzētu būt !^sponsor/ (kā iepriekš).

Ņemiet vērā, ka iepriekš minētais arī noķers www apakšdomēns, ja tas ir iespējots. Ja jums ir tikai viens domēns (ti. example.com), tad jūs varat vienkāršot nosacījumu šādi:

RewriteCond %{HTTP_HOST} ^([^.]+)\. 

Kopumā ar visu kodu:

Options +FollowSymlinks RewriteCond %{HTTP_HOST} ^([^.]+)\. RewriteRule !^sponsor/ https://%{HTTP_HOST}/sponsor/%1%{REQUEST_URI} [R,L] # BEGIN WordPress  RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]  # END WordPress 

Nav nepieciešams atkārtot RewriteEngine direktīvu.

Pirms testēšanas noteikti notīriet pārlūkprogrammas kešatmiņu.

  • Sveiki MrWhite, es esmu ļoti pateicīgs par šo ierosinājumu. Paldies arī par padomiem. Tas šķiet ļoti tuvu maniem panākumiem. Tagad kods darbojas ar http: // un arī ar https: //, taču URL vienmēr atdod / sponsors / piemērs / sponsors / piemērs / sponsors / piemēra TAG. Atverot HTTP apakšdomēnu.example.com vai HTTPS apakšdomēnu.example.com, es saņemu apakšdomēnu.example.com/sponsors/example/sponsor/example/sponsor/…, manuprāt, trūkst kāda beigu taga.
  • Ak, jā, atvainojiet, regex bija kļūda .... Noņemiet beigas $ uz RewriteRule modeli. ti. Kas bija !^sponsor/$ vajadzētu būt !^sponsor/ - Es esmu atjauninājis savu atbildi.
  • 1 pēdējais jautājums: vai mēs varam noņemt noklusējuma pievienošanu "index.php" no URL beigām?
  • Tas ir pavisam cits jautājums. Nav skaidrs, kāpēc "index.php" tiktu pievienots vispār (ja vien jums nav iespējota WordPress "diezgan" pastāvīgo saišu versija)? Šīs direktīvas nedara to.
  • Jā, ir iespējotas diezgan pastāvīgās saites. Tagad visi URL tiek ievietoti taga index.php beigās. Man labāk būtu šādā veidā vienkārši: apakšdomēns.example.com/sponsors/example

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