IIS 7 URL Rewrite Rule / Omezit požadavek uživatele na konkrétní složku / soubor / typy souborů

Snažil jsem se vytvořit subdoménu z adresáře (od .htaccess), které mají být použity jako hlavní stránka začínající jako http://domain.com/sub/2/3/4.html a proměnit se v http://sub.domain.com/2/3/4.html.

Systém složek vypadá takto:

www\sub\2\3\ 

v www tady je index.html a v podsložce je jiná index.html.

V současné době mám tento kód, který jsem našel na jiném webu:

Options -Indexes +FollowSymLinks RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^domain.com [NC] RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301] RedirectMatch 301 ^/sub/(.*)$ http://sub.domain.com/$1 

Je úspěšné se změnou cesty k doméně http://sub.domain.com/, ale není úspěšná při změně stránky zobrazené z indexu v www do indexu v podadresáři.

Rovněž není úspěšné při otevírání dalších stránek, tj. Neumožňuje sub.domain.com/2/3/4.html. Pokud někdo může poradit, byl by velmi oceněn.

Našel jsem nějaký fantastický kód pro .htaccess, který převádí libovolnou složku v hlavním adresáři www na subdomény, např. www / somefolder se změní na somefolder.domain.com, můžete jej také nastavit tak, aby se jakýkoli adresář v určitém adresáři stal subdoménou, např. www / folder / somefolder se změní na somefolder.domain.com

níže uvedený kód je nastaven na přesměrování adresáře uvnitř konkrétního adresáře

Options +FollowSymLinks -Multiviews RewriteEngine on RewriteBase / # # Canonicalize the hostname RewriteCond www.%{HTTP_HOST} ^(www)\.(example\.com) [OR] RewriteCond %{HTTP_HOST} ^www\.([^.]+)\.(example\.com) [OR] RewriteCond %{HTTP_HOST} ^([^.]+)\.www\.(example\.com) [OR] RewriteCond %{HTTP_HOST} ^([^.]+)\.(example\.com). [OR] RewriteCond %{HTTP_HOST} ^([^.]+)\.(example\.com):[0-9]+ RewriteRule (.*) http://%1.%2/$1 [R=301,L] # # If subdomain is NOT www RewriteCond %{HTTP_HOST} !^www\.example\.com [NC] # Extract (required) subdomain to %1 RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com$ # Rewrite if requested URL resolves to existing file or subdirectory in /subdomains// path RewriteCond %{DOCUMENT_ROOT}/subdomains/%1/$1 -f [OR] RewriteCond %{DOCUMENT_ROOT}/subdomains/%1/$1 -d RewriteRule (.*) /subdomains/%1/$1 [L] 

jednoduše změňte „example.com“ na svou doménu, např. „doména.com“ se ujistěte, že neodstraňujete žádné jiné symboly kromě teček. v současné době se adresář ve složce s názvem „subdomény“ změní na subdoménu, např. www / subdomény / blog se změní na „blog.domain.com“ a nastaví tak, aby pouze změnily složky v adresáři www na subdomény např. www / blog se změní na „blog.domain.com“

pokud chcete automaticky přeposlat na subdoménu např. blog.domain.com, budete to muset dát na konec druhého kódu

RewriteCond %{HTTP_HOST} ^example\.com$ [NC] RewriteRule ^(.*)$ http://blog.example.com/$1 [R=301,L] 

doufám, že to funguje pro všechny, protože mi trvalo věky, než jsem našel řešení tohoto hrozného problému díky Reblerebel

Musíte nakonfigurovat virtuálního hostitele Apache pro sub.domain.com s www/sub jako jeho DirectoryRoot.

  • jak bys to udělal?
  • httpd.apache.org/docs/2.0/vhosts/examples.html
  • vložím to do souboru .htaccess, protože nemohu upravit žádné další předvolby
  • Ne, nejedná se o konfiguraci .htaccess. Musíte upravit apache's apache2.conf nebo httpd.conf. Budete o to muset požádat svého správce.
  • v současné době používám bezplatnou hadici, do které mohu FTP, takže by to šlo do adresáře www?

Pracoval pro vás: Charles Robertson | Chcete nás kontaktovat?