webForumDet fria alternativet

.htaccess fråga gällande url:er

PHP

3 svar · 804 visningar · startad av caze

Medlem sedan sep. 20016 059 inlägg
Frågan#1

Har en del dåliga och gamla URL:er som jag behöver peka vidare till en ny sajt. Får dock inte det att fungera och antar att det beror på alla konstiga tecken i urlen.

Exempel:

/goto.php?ref=y&sess=+A5D5740191D51+F18435A52+9+B581D1058+E+357+9+25D51+F+C42&id=2115,"1,047",684,00:03:48,680,32.06%,33.81%,$0.00

Så här koden ut just nu:

Options +FollowSymLinks
RewriteEngine On

RewriteBase /
RewriteCond %{REQUEST_URI} !^robots.txt
RewriteCond %{REQUEST_URI} !^favicon.ico
RewriteCond %{REQUEST_URI} !^sitemap.xml
RewriteCond %{REQUEST_URI} !^sitemap.xml.gz
RewriteCond %{REQUEST_FILENAME}  !-d
RewriteRule ^/?([a-z-A-Z?=+$%&":,_0-9]+)$ $1.php [NC,L]

RewriteCond %{HTTP_HOST} ^url\.se$
RewriteRule ^(.*)$ http://www.url.se/$1 [R,L]

Jag simpla url-pekningar att fungera men inte den här:

Redirect 301 /goto.php?ref=y&sess=+A5D5740191D51+F18435A52+9+B581D1058+E+357+9+25D51+F+C42&id=2115,"1,047",684,00:03:48,680,32.06%,33.81%,$0.00 http://www.url.se/sida

Kan någon se vad det beror på? Skulle uppskattas enormt! :)

Medlem sedan aug. 20039 340 inlägg
#2

Querystringen behandlas separat från bas-URLen. Querystringen ligger istället i variablen %{QUERY_STRING} som du kan komma åt med en RewriteCond. Om
Om du vill plocka ut något ur queystringen kan du göra så här. Notera %1 istället för $1 för att komma åt det som matchades.

RewriteCond %{QUERY_STRING} något=([^&]*)
RewriteRule . %1.php [NC,L]

Om du bara vill bevara queystringen och inte matcha något särskilt ur den ska du använda direktivet QSA (för querystring append). Om du dessutom inte vill ändra något i URLen så kan du använda - som ersättningssträng. T ex:

Options +FollowSymLinks
RewriteEngine On

RewriteBase /
RewriteCond %{REQUEST_URI} !^robots.txt
RewriteCond %{REQUEST_URI} !^favicon.ico
RewriteCond %{REQUEST_URI} !^sitemap.xml
RewriteCond %{REQUEST_URI} !^sitemap.xml.gz
RewriteCond %{REQUEST_FILENAME}  !-d
RewriteRule . - [NC,QSA,L]

RewriteCond %{HTTP_HOST} ^url\.se$
RewriteRule ^(.*)$ http://www.url.se/$1 [R,QSA,L]
Medlem sedan sep. 20016 059 inlägg
#3

Tack för ditt svar! Har testat att lägga in detta men får det inte att fungera...

Förtydligande: Jag vill kunna peka ett 20-tal URL:er med motsvarande struktur som angivet i första inlägget. De ska landa till unika URL:er så behöver skriva flera rader med
Redirect 301 /goto.php?ref=y&sess=+A5D5740191D51+F18435A52+9+B581D1058+E+357+9+25D51+F+C42&id=2115,"1,047",684,00:03:48,680,32.06%,33.81%,$0.00 http://www.url.se/sida

Medlem sedan aug. 20039 340 inlägg
#4

Redirect har inte stöd för querystrings. Du måste använda RewriteCond+RewriteRule för att matcha i querystrings, som jag visade ovan.

290 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
159 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)