Autor Zpráva
Ati Mucska
Profil
Dobrý deň,

potreboval by som maskovat linky:
www.nieco.sk/blog/nazov-blogu na www.nazov-blogu.nieco.sk/ - Toto maskovanie mam hotové avśak potrebujem na tuto fiktivnu subdomenu presmerovat aj clanky toho blogu z linku:
www.nieco.sk/blog/nazov-blogu/nazov-clanku na www.nazov-blogu.nieco.sk/nazov-clanku

Web je robeny v PHP frameworku Laravel.

.htaccess subor:

<IfModule mod_rewrite.c>
    RewriteEngine On

   Header set Access-Control-Allow-Origin "*"
    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

   # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

   # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

   #presmerovanie na subdomenu

   RewriteCond %{HTTP_HOST} ^(.+?)\.(jacestovatel\.cz)/([^.]+)\$ [NC]
    RewriteRule ^ http://www.%2.cz/blog/%1/%3 [L,P]

  RewriteCond %{HTTP_HOST} !^www\. [NC]
   RewriteCond %{HTTP_HOST} ^(.+?)\.(jacestovatel\.cz)$ [NC]
   RewriteRule ^ http://www.%2/blog/%1 [L,P]

  RewriteCond %{HTTP_HOST} ^www.(.+?)\.(jacestovatel\.cz)$ [NC]
   RewriteRule ^ http://www.%2/blog/%1 [L,P]


</IfModule>

Dakujem mockrat za rady a odpovede :)
Kajman
Profil
Zkuste tyto změny
RewriteRule ^(.*)$ http://www.%2/blog/%1/$1 [L,P]

Ale je možné, že pravidlo na řádku 9-12 bude muset být za těmi pravidly 23-28.

Podmínka na řádku 20 nebude nikdy splněna. V HTTP_HOST je název serveru bez cesty.
Ati Mucska
Profil
Kajman:
Teraz clanok na subdomene funguje ale nefunguje nazev-blogu.nieco.sk ani www.nazev-blogu.nieco.sk
<IfModule mod_rewrite.c>
    RewriteEngine On

    Header set Access-Control-Allow-Origin "*"
    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]


    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    #presmerovanie na subdomenu

    RewriteCond %{HTTP_HOST} ^(.+?)\.(jacestovatel\.cz)/([^.]+)\$ [NC]
    RewriteRule ^(.*)$ http://www.%2/blog/%1/$1 [L,P]

   RewriteCond %{HTTP_HOST} !^www\. [NC]
   RewriteCond %{HTTP_HOST} ^(.+?)\.(jacestovatel\.cz)$ [NC]
   RewriteRule ^(.*)$ http://www.%2/blog/%1/$1 [L,P]

   RewriteCond %{HTTP_HOST} ^www.(.+?)\.(jacestovatel\.cz)$ [NC]
   RewriteRule ^(.*)$ http://www.%2/blog/%1/$1 [L,P]

   # Handle Front Controller...
       RewriteCond %{REQUEST_FILENAME} !-d
       RewriteCond %{REQUEST_FILENAME} !-f
       RewriteRule ^ index.php [L]


</IfModule>
Kajman
Profil
Asi tam bude problém s lomítkem před prázdným $1.

Nejsem si jistý, co pomůže. Zkusil bych

- přidat podmínku k pravidlu 7, že se nemá přesměrovat, pokud už to není interně přepsáno
RewriteCond %{ENV:REDIRECT_STATUS} =""

- upravit aplikaci, aby akceptovala cesty končící lomítkem

- zduplikovat pravidla na řádku 21 a 24 (včetně rewritecond), tak že bude nejdříve pravidlo pro prázdný požadavek
RewriteRule ^$ http://www.%2/blog/%1 [L,P]
a poté teprve nynější pravidlo na neprázdný požadavek
Ati Mucska
Profil
Kajman:
Ked som pridal RewriteCond %{ENV:REDIRECT_STATUS} ="" tak to znefunkcnilo cely web. Takto som to zduplikoval neviem ci som vam dobre rozumel, ale takto to nejde, ani clanok ani subdomena. Mohli by ste mi to priamo urobit do kodu? Taktiez ak by ste mohli dat kontakt na Vas email,skype alebo facebook ocenil by som to velmi a bol by som vam vdacny.
<IfModule mod_rewrite.c>
    RewriteEngine On

    Header set Access-Control-Allow-Origin "*"
    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]


    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    #presmerovanie na subdomenu

      RewriteCond %{HTTP_HOST} !^www\. [NC]
       RewriteCond %{HTTP_HOST} ^(.+?)\.(jacestovatel\.cz)$ [NC]
       RewriteRule ^$ http://www.%2/blog/%1 [L,P]

    RewriteCond %{HTTP_HOST} ^(.+?)\.(jacestovatel\.cz)/([^.]+)\$ [NC]
    RewriteRule ^(.*)$ http://www.%2/blog/%1/$1 [L,P]

   RewriteCond %{HTTP_HOST} ^www.(.+?)\.(jacestovatel\.cz)$ [NC]
   RewriteRule ^$ http://www.%2/blog/%1 [L,P]

       RewriteCond %{HTTP_HOST} ^(.+?)\.(jacestovatel\.cz)/([^.]+)\$ [NC]
       RewriteRule ^(.*)$ http://www.%2/blog/%1/$1 [L,P]

   # Handle Front Controller...
       RewriteCond %{REQUEST_FILENAME} !-d
       RewriteCond %{REQUEST_FILENAME} !-f
       RewriteRule ^ index.php [L]


</IfModule>
Kajman
Profil
Zkuste

<IfModule mod_rewrite.c>
    RewriteEngine On
    
    Header set Access-Control-Allow-Origin "*"
    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=302,NE]    
    
    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    
    #presmerovanie na subdomenu
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteCond %{HTTP_HOST} ^([^.]+)\.(jacestovatel\.cz)$ [NC]
    RewriteRule ^(index\.php)?$ http://www.%2/blog/%1 [L,P]

    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteCond %{HTTP_HOST} ^([^.]+)\.(jacestovatel\.cz)$ [NC]
    RewriteRule ^(.+)$ http://www.%2/blog/%1/$1 [L,P]

    RewriteCond %{HTTP_HOST} ^www\.([^.]+)\.(jacestovatel\.cz)$ [NC]
    RewriteRule ^(index\.php)?$ http://www.%2/blog/%1 [L,P]

    RewriteCond %{HTTP_HOST} ^www\.([^.]+)\.(jacestovatel\.cz)$ [NC]
    RewriteRule ^(.+)$ http://www.%2/blog/%1/$1 [L,P]
    
    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]


</IfModule>
Ati Mucska
Profil
Kajman:
Článok na subdoméne funguje, ale samostatná subdoména nie...

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: