Bezoekers doorsturen via .htaccess

Status
Niet open voor verdere reacties.

RogerS

Meubilair
Lid geworden
2 mrt 2009
Berichten
6.627
Heb het volgende probleem. Onlangs een webshop op basis van Prestashop live gezet. Echter nu ik op de achtergrond een tweede taal heb toegevoegd zijn alle URLs veranderd. Niet handig voor SEO en bezoekers die bookmarks hebben gemaakt. Ben dus nu al een paar dagen op zoek naar de juiste inhoud voor .htaccess om bezoekers die nog op de oude link terechtkomen door te sturen naar de nederlandse site.

Voorbeelden:
www.domein.nl/ wordt nu al doorgeleid door Prestashop zelf (zit in de rest van de .htaccess) naar je laatst gebruikte taal -> www.domein.nl/nl/
www.domein.nl/01-spullen/ werkt dus nu niet meer en zou moeten worden www.domein.nl/nl/01-spullen/
www.domein.nl/nl/iets is goed en hoeft niet meer aangepast
 
Je kunt kijken naar je request uri. Even uit de losse pols:

RewriteCond %{REQUEST_URI} !^/(nl|en)/.+$
RewriteRule ^(.*)$ /nl/$1
 
Werkt dus bijna helemaal goed. Dank Wampier :thumb:

Kom er wel nu achter dat er blijkbaar ook nog een url in de vorm /content/1-delivery bestaat. Die eindigen nu met een 500 internal server error. De links uit mijn eerste post werken perfect.
 
En wat moeten die links wel worden? In principe kun je dezelfde techniek toepassen om andere effecten te bereiken.
 
in feite geldt voor alle URLs behalve het domein zelf dat als er geen /nl/ of /en/ staat dit er dan tussen geplakt moet worden, dit ongeacht hetgeen erachter komt aan mappen of parameters

www.domein.nl niks aan doen, werkt
www.domein.nl/1-artikel wordt www.domein.nl/nl/1-artikel ,werkt
www.domein.nl/content/2-payment moet worden www.domein.nl/nl/content/2-payment
www.domein.nl/manufacturers worden www.domein.nl/nl/manufacturers

van die laatste 2 voorbeelden zijn er op dit moment een 30-40 verschillende
 
Maar dat zou ook moeten werken. Dus of de target bestaat niet, of er gaat toch ergens iets mis met de rewrite. Je zou debugging aan kunnen zetten, dan krijg je precies te zien welke target ervan gemaakt wordt.

mogelijk ergens een dubbele slash, of een trailing slash die er niet is. Heb je al met de hand de verwachtte targets getest?
 
Met de hand alles getest en de links werken. Hieroder de volledige inhoud. Als ik jouw stukje vooraan plaatst loop ik bij elke pagina tegen een 500 pagina aan. Achteraan werkt het dus grotendeels wel.

Code:
#Block IP
<Limit GET>
order allow,deny
deny from 46.105.
deny from 176.31.
deny from 69.64.41.
deny from 82.94.254.52
deny from 162.243.242.251
allow from all
</Limit>
#Block IP

#blockguestbook - not remove this comment 
RewriteRule ^(.*)guestbook/?$ /modules/blockguestbook/blockguestbook-form.php [QSA,L] 
#blockguestbook

# ~~start~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again
# .htaccess automaticaly generated by PrestaShop e-commerce open-source solution
# http://www.prestashop.com - http://www.prestashop.com/forums

<IfModule mod_rewrite.c>
SetEnv HTTP_MOD_REWRITE On
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.domein.nl$
RewriteRule . - [E=REWRITEBASE:/]
RewriteRule ^api/?(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]

# Images
RewriteCond %{HTTP_HOST} ^www.domein.nl$
RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L]
RewriteCond %{HTTP_HOST} ^www.domein.nl$
RewriteRule ^([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$1$2$3$4.jpg [L]
RewriteCond %{HTTP_HOST} ^www.domein.nl$
RewriteRule ^([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$1$2$3$4$5.jpg [L]
RewriteCond %{HTTP_HOST} ^www.domein.nl$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg [L]
RewriteCond %{HTTP_HOST} ^www.domein.nl$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg [L]
RewriteCond %{HTTP_HOST} ^www.domein.nl$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg [L]
RewriteCond %{HTTP_HOST} ^www.domein.nl$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg [L]
RewriteCond %{HTTP_HOST} ^www.domein.nl$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg [L]
RewriteCond %{HTTP_HOST} ^www.domein.nl$
RewriteRule ^c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2$3.jpg [L]
RewriteCond %{HTTP_HOST} ^www.domein.nl$
RewriteRule ^c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2.jpg [L]
# AlphaImageLoader for IE and fancybox
RewriteCond %{HTTP_HOST} ^www.domein.nl$
RewriteRule ^images_ie/?([^/]+)\.(jpe?g|png|gif)$ js/jquery/plugins/fancybox/images/$1.$2 [L]

# Dispatcher
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{HTTP_HOST} ^www.domein.nl$
RewriteRule ^.*$ - [NC,L]
RewriteCond %{HTTP_HOST} ^www.domein.nl$
RewriteRule ^.*$ %{ENV:REWRITEBASE}index.php [NC,L]
</IfModule>

<IfModule mod_expires.c>
	ExpiresActive On
	ExpiresByType image/gif "access plus 1 month"
	ExpiresByType image/jpeg "access plus 1 month"
	ExpiresByType image/png "access plus 1 month"
	ExpiresByType text/css "access plus 1 week"
	ExpiresByType text/javascript "access plus 1 week"
	ExpiresByType application/javascript "access plus 1 week"
	ExpiresByType application/x-javascript "access plus 1 week"
	ExpiresByType image/x-icon "access plus 1 year"
</IfModule>

FileETag INode MTime Size
<IfModule mod_deflate.c>
	<IfModule mod_filter.c>
		AddOutputFilterByType DEFLATE text/html text/css text/javascript application/javascript application/x-javascript
	</IfModule>
</IfModule>

#If rewrite mod isn't enabled
ErrorDocument 404 /index.php?controller=404

# ~~end~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again

#Redirect for non language URLs
RewriteCond %{REQUEST_URI} !^/(nl|en)/.+$
RewriteRule ^(.*)$ /nl/$1

#Redirect old shop visitors to new site
Redirect 301 /shop http://www.domein.nl
 
Ik kan het niet reproduceren op mijn eigen server. mogelijk is er een conflict met de andere rules.

je kunt eventueel de [R, L, NC] flags toevoegen en kijken wat er gebeurd:

RewriteCond %{REQUEST_URI} !^/(nl|en)/.+$
RewriteRule ^(.*)$ /nl/$1 [NC,R,L]
 
ik vermoed van wel aangezien de positie van invoegen een verschil geeft in uitkomst. Ga nog eens verder experimenteren. Het grootste probleem is echter opgelost. Wat overblijft zijn een paar losse pagina's die ook te bereiken zijn via de hoofdpagina. Eenmaal op het juiste pad blijven de links gewoon werken.

Dank voor je moeite in ieder geval.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan