webForumDet fria alternativet

Problem .htaccess redirect

PHP

7 svar · 1 645 visningar · startad av Travoni

Medlem sedan okt. 20041 556 inlägg
Frågan#1

Jag får inte den fetade redirecten att fungera. Vad kan vara fel?

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
[B]RewriteRule ^(.*)344$ http://www.hemsidan.se/ny-sida-346[/B] [L,R=301]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Medlem sedan okt. 20041 556 inlägg
#2

Alltså sidan med querysträngen ?p=344, skall redirectas till denna: http://www.hemsidan.se/ny-sida-346

(Obs! Det är en annan domänadress)

Medlem sedan okt. 20041 556 inlägg
#3

Jag märker att om jag slår in adressen ex. http://www.hemsidan.se/vad-som-helst-344 så blir jag redirectad till http://www.hemsidan.se/ny-sida-346 men inte om det är en querystring...

Medlem sedan aug. 20039 340 inlägg
#4

RewriteRule i sig matchar bara URL-delen. För att matcha något annat (som cookies, type av request eller som i detta fall queystringen) måste du ta hjälp av en RewriteCond. RewriteRule .* matchar vadsomhelst. (Den egentliga matchningen sker ju på raden innan.)

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{QUERY_STRING} p=344
RewriteRule .* [url]http://www.hemsidan.se/ny-sida-346[/url] [L,R=301]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Medlem sedan okt. 20041 556 inlägg
#5

Funkar nästan...
Nu blir man omdirigerad till: http://www.hemsidan.se/ny-sida-346?p=344

Vilket såklart blir kajko.

Medlem sedan okt. 20041 556 inlägg
#6

Det verkar fungera om jag vänder på det:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

RewriteCond %{QUERY_STRING} p=344
RewriteRule .* http://www.hemsidan.se/ny-sida-346 [L,R=301]

</IfModule>
# END WordPress
Medlem sedan okt. 20041 556 inlägg
#7

Eller skall det spela ngn roll?

Medlem sedan okt. 20041 556 inlägg
#8

Man lägger till ett frågetecken i slutet, det strippar bort QS.

RewriteCond %{QUERY_STRING} p=344
RewriteRule .* http://www.hemsidan.se/ny-sida-346? [L,R=301]
252 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)