Autor Zpráva
Lukáš1
Profil *
Požadavek je tento:

1) Při navštívení /sitemap.php chci přesměrovat na sitemap.xml (včetně QS)
2) Při návštívení /sitemap.xml chci podstrčit obsah /sitemap.php (včetně QS)

Pravidla mám následující:
  RewriteCond %{REQUEST_URI} ^/sitemap\.xml
  RewriteRule ^sitemap\.xml(.*)$ /sitemap.php$1 [NC,QSA,L]
  RewriteCond %{REQUEST_URI} ^/sitemap\.php
  RewriteRule ^sitemap\.php(.*)$ http://domena.cz/sitemap.xml$1 [NC,R=301,QSA,L]

Což mi ale (poměrně logicky) generuje smyčku. Jak by se dal problém efektivně řešit? Díky.
Marschmallow
Profil
Lukáš1:
Nepochopil jsem otázku. Ty vytváříš smyčku a chceš ji vytvořit jiným způsobem?
Kajman
Profil
Lukáš1:
RewriteEngine On
RewriteBase /
RewriteCond %{ENV:REDIRECT_STATUS} =""
RewriteRule ^sitemap\.php$ sitemap.xml [NC,R=301,L,NE]
RewriteRule ^sitemap\.xml$ sitemap.php [NC,L]
Lukáš1
Profil *
Marschmallow:
Nene - já tam tu smyčku nechci :) Jen chci aby se nedalo dostat na sitemap.php


Kajman:
Díky - zkusím. Pokud se nepletu, tak toto:
RewriteCond %{ENV:REDIRECT_STATUS} =""
znamená "jen pokud se teď nepřesměrovávalo", je to tak?
Kajman
Profil
Lukáš1:
jen pokud se teď nepřesměrovávalo

Je to spíše podmínka, že to není podstrčená adresa.

A u toho přesměrování jsem zapomněl NE, bez toho by zlobila diakritika v query stringu.
Lukáš1
Profil *
Kajman:
Děkuji, funguje to výborně.
Jen mi ještě není jasné, jakto, že se přenáší i Query String, když v pravidle není modifikátor [QSA]. Já měl za to, že ve výchozím stavu (tedy bez QSA modifikátoru) se QS ignoruje.
Davex
Profil
Lukáš1:
Já měl za to, že ve výchozím stavu (tedy bez QSA modifikátoru) se QS ignoruje.
Ignoruje se pouze v případě, kdy je jako cíl přepisu definována adresa s novým query string.

Např.:
RewriteRule ^sitemap\.php$ sitemap.xml?parametr=navíc [NC,R=301,L,NE]
RewriteRule ^sitemap\.xml$ sitemap.php? [NC,L]
Lukáš1
Profil *
Davex:
Aha - dobře, děkuji za vysvětlení :)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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