301 redirect probleem - urgent
Ik heb al eens eerder een topic gepost met een 301 redirect probleem in .htaccess.
Dat probleem is niet opgelost en ik heb betreffende website toen helemaal verwijderd omdat het één chaos werd door de redirects.
MAAR... ik nu nu toch weer een probleem bij een website. En ook daar gaat het fout met de 301 redirect.
Ik ben dus nu toch wel heel erg benieuwd WAT er precies fout gaat en hoe ik dit kan oplossen.
De situatie:
Ik heb een website x (www.websitex.nl): dit is de oude website
Ik heb een website y (www.websitey.nl): dit is de nieuwe website
De menu structuur van beide websites zijn NIET veranderd. Alleen maar het domeinnaam.
Dus op website x had ik een url als: http://www.websitex.nl/contact/adres.html
Deze moet dus volledig worden geredirect naar http://www.websitey.nl/contact/adres.html
Echter wordt hij geredirect naar: http://www.websitey.nl/contact/adres.html?butt=contact&vara=adres
Er wordt dus achter de .html een variabelen reeks gezet.
Op website x heb ik 1 301 redirect geplaatst in de .htaccess file voor de gehele website.
De .htaccess van website y ziet er als volgt uit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
php_value register_globals on
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^websitey\.nl [NC]
RewriteRule ^(.*) http://www.websitey.nl/$1 [l,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+).html index.php?butt=$1&vara=$2&varb=$3&varc=$4 [NC]
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+).html index.php?butt=$1&vara=$2&varb=$3 [NC]
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+).html index.php?butt=$1&vara=$2 [NC]
RewriteRule ^([A-Za-z0-9-]+).html index.php?butt=$1 [NC]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^websitey\.nl [NC]
RewriteRule ^(.*) http://www.websitey.nl/$1 [l,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+).html index.php?butt=$1&vara=$2&varb=$3&varc=$4 [NC]
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+).html index.php?butt=$1&vara=$2&varb=$3 [NC]
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+).html index.php?butt=$1&vara=$2 [NC]
RewriteRule ^([A-Za-z0-9-]+).html index.php?butt=$1 [NC]
</IfModule>
Meer staat er niet in de .htaccess
Ik ben zeer benieuwd of iemand hier een oplossing voor heeft of mij kan vertellen wat er fout gaat.
Ik zou alleen van die regel 7 weglaten.
Het feit dat je de .htaccess van websitex gebruikt, impliceert als dat de url niet deugde, dus waarom nog een conditie op websitey.nl?
REgel 9 zul je noooit bereiken. (al zou ik voor de zekerheid ook een L gebruiken in die [L,R=301] ipv een l
Toevoeging op 25/09/2014 11:31:02:
bij nader inzien:
je zegt op site X
RewriteCond %{HTTP_HOST} ^websitey\.nl [NC]
'als de domainname begint met "websiteY.nl" '
Dat is dus nooit.
Hoe je dan alsnog op site websiteY.nl terecht komt???
In een php script misschien?
Of ben ik nu heel stom aan het doen. (de oude htaccess lijkt me dan wel overbodig maar toch)
Voor de nieuwe website gebruik ik de .htaccess zoals ik heb toegevoegd in mijn post.
Ivo P, kun je iets concreter uit leggen wat ik zou moeten doen?
De weergegeven .htaccess is enkel en alleen voor de nieuwe website (y).
klassiek probleem: regels 10 en 11 hebben alleen betrekking op de eerstvolgende rule
vervang die door
Code (php)
1
2
3
2
3
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . -
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . -
Maar wat betekent het "klassieke probleem"?
En wat doet:
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . -
op dit moment?
als het opgevraagde een FILE is
[OR]
of :-)
RewriteCond %{REQUEST_FILENAME} -d
als het opgevraagde een Directory is (/ of /fotos/ )
RewriteRule . -
doe niets...
En daar zou nog een [L] achter mogen wegens "last": stoppen met verdere rewrites.
Klassiek, omdat men nogal eens denkt dat het omgekeerde gedaan moet worden. Namelijk "als het _niet_ bestaat dan..."
Kan ook, maar dan moet je het wel steeds voor _elke_ rewriterule herhalen.
En dat laatste gebeurt vaak niet.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
php_value register_globals on
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^websitey\.nl [NC]
RewriteRule ^(.*) http://www.websitey.nl/$1 [l,R=301]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . -
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+).html index.php?butt=$1&vara=$2&varb=$3&varc=$4 [NC]
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+).html index.php?butt=$1&vara=$2&varb=$3 [NC]
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+).html index.php?butt=$1&vara=$2 [NC]
RewriteRule ^([A-Za-z0-9-]+).html index.php?butt=$1 [NC]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^websitey\.nl [NC]
RewriteRule ^(.*) http://www.websitey.nl/$1 [l,R=301]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . -
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+).html index.php?butt=$1&vara=$2&varb=$3&varc=$4 [NC]
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+).html index.php?butt=$1&vara=$2&varb=$3 [NC]
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+).html index.php?butt=$1&vara=$2 [NC]
RewriteRule ^([A-Za-z0-9-]+).html index.php?butt=$1 [NC]
</IfModule>
??
En waar zou ik eventuele nieuwe Redirect 301 moeten plaatsen binnen deze .htaccess?
Ik blijf het maar een ingewikkelde materie vinden...