2016-06-30 13 views
1

Ich arbeite an einem Projekt für die Erstellung einer Website, die länderspezifische URLs enthält, um es zielgerichteter und separater zu machen.Brauchen Sie Hilfe in Bezug auf. Htaccess URL Umschreiben für länderspezifische Unterverzeichnis URLs

Hier ist, was ich will:

  1. offen - domain.com und lesen Sie diese Datei index.php

  2. , wenn sie geöffnet domain.com/us/ und lesen Sie diese Datei country.php (/ us/it kann alles wie/de// in// uk/bedeutet dynamisch generierten Ländercode basierend auf Anfrage.

  3. Wenn geöffnet domain.com/us/free-free-free-ad1965.html (seine Post auf der Website mit der ID 1965 aus der Datenbank, so sollte es ad.php Datei lesen

  4. wenn offen domain.com/xyz welches nicht definiert es 404 Fehler geben sollte und lesen 404.php Datei Gleiches gilt

hier domain.com/us/xyz meiner aktuellen .htaccess-Code ist :

Options +FollowSymlinks 
RewriteEngine on 
RewriteCond %{HTTP_HOST} ^domain.com [NC] 
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301] 
RewriteRule ^(.*)/ country.php?countrycode=$1 [NC] 
RewriteRule ^(.*)/(.*)-ad(.*).html ad.php?countrycode=$1&post=$2&id=$3 [NC] 
RewriteRule ^maintenance\.html$ maintenance.php [NC,L] 
RewriteRule ^submit\.html$ submit.php [NC,L] 
RewriteRule ^privacy\.html$ privacy.php [NC,L] 
RewriteRule ^terms\.html$ terms.php [NC,L] 
RewriteRule ^contact\.html$ contact.php [NC,L] 

ErrorDocument 400 /404.php 
ErrorDocument 401 /404.php 
ErrorDocument 403 /404.php 
ErrorDocument 404 /404.php 
ErrorDocument 500 /404.php 

nach dieser .htaccess Option 1 funktioniert gut, jedes Mal und Option 2 Anwendung 4 ist mit jedem anderen Konflikt zu geraten. Die vier Optionen sind getrennt und sollten miteinander funktionieren.

Bitte helfen Sie mir, wie kann ich das tun?

Antwort

0

Wie genauer die Regel, wie weiter oben sollte es sein.

Sie sollten die Reihenfolge ändern.

RewriteRule^(. )/(.) -ad (. *). Html ad.php? Country = 1 & $ post = & $ 2 id = $ 3 [NC] wahrscheinlich Sollte mehr auf sein

Options +FollowSymlinks 
RewriteEngine on 
RewriteCond %{HTTP_HOST} ^domain.com [NC] 
RewriteRule ^(.*)/(.*)-ad(.*).html ad.php?countrycode=$1&post=$2&id=$3 [NC] 
RewriteRule ^(.*)/$ country.php?countrycode=$1 [NC] 
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301] 


RewriteRule ^maintenance\.html$ maintenance.php [NC,L] 
RewriteRule ^submit\.html$ submit.php [NC,L] 
RewriteRule ^privacy\.html$ privacy.php [NC,L] 
RewriteRule ^terms\.html$ terms.php [NC,L] 
RewriteRule ^contact\.html$ contact.php [NC,L] 

ErrorDocument 400 /404.php 
ErrorDocument 401 /404.php 
ErrorDocument 403 /404.php 
ErrorDocument 404 /404.php 
ErrorDocument 500 /404.php 
+0

Ok habe ich versucht, es aber kein Glück. wenn Sie http: // www.domain.com/us/'anfordern, geben Sie" http: //www.domain.com/country.php/? countrycode = country.php "und bei Anforderung von http: // www. domain.com/us/free-free-free-ad1965.html Fehler wird angezeigt: Die Seite wird nicht richtig umgeleitet Firefox hat festgestellt, dass der Server die Anforderung für diese Adresse auf eine Weise umleitet, die niemals abgeschlossen wird . –

+0

Ok ich denke, es funktioniert jetzt, das Problem war 301 Redirect-Code-Zeile ich änderte seine Position zurück und jetzt funktioniert es. 'RewriteCond% {HTTP_HOST}^domain.com [NC]' 'RewriteRule^(. *) $ Http://www.domain.com/$1 [L, R = 301]' 'RewriteRule^(. *)/(. *) - ad (. *) .html ad.php? countrycode = $ 1 & post = $ 2 & id = $ 3 [NC] ' ' RewriteRule^(. *)/$ country.php? countrycode = $ 1 [NC] ' –

Verwandte Themen