2016-08-14 3 views
-1

ich alte URLs wie diese haben:Wie Teil der URL via .htaccess einfügen

http://example.com/news/newscategory/77654 

Und es sollte auf diese URL-Struktur neu geschrieben werden:

http://example.com/news/newscategory/id/77654 

die Nachricht statisch So ist hier wie es der Ordner ist. Die Nachrichtenkategorie kann etwas anderes sein (mehrere Kategorien). Und ich möchte den Benutzer (301) auf neue URL mit ID/Teil umleiten.

Ich hole die URL über PHP, wo die Nachrichten Schlüssel, Nachrichtenkategorie ist Wert, ID ist Schlüssel und Nummer am Ende ist wieder, Wert.

Ich verwende diese .htaccess dafür:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 
</IfModule> 

Dann benutze ich einige PHP-Bibliothek, die Werte zu holen.

Bearbeiten: Was ich frage ist, dass ich Benutzer von der ersten URL auf die zweite umleiten möchte, so dass ich die ID abrufen kann.

Der erste Link funktioniert bereits, aber ich habe immer noch Links zu der alten URL-Struktur, die zur Kategorieansicht führt. Live-Urls:

alte Struktur: http://www.autonet.ee/uudised/paevauudised/77665

neue Struktur: http://www.autonet.ee/uudised/paevauudised/id/77665

die alte sollten Anwender auf die neue Verbindung umleiten.

+1

Sind Sie Fragen Sie nach Hilfe beim Schreiben von Apache RewriteRules, die die 'newcategory' und numerische ID in GET-Variablen für index.php umwandeln, oder suchen Sie Hilfe beim Schreiben der PHP-Komponente ent, die die ursprüngliche Abfragezeichenfolge analysiert? Ihre Frage scheint keine tatsächliche * Frage * zu stellen. Während Sie eine Apache-Konfiguration hinzugefügt haben, haben Sie weder Code noch eine Erklärung für das Problem, das Sie haben oder wo Sie enden möchten, enthalten oben. Bitte [bearbeite deine Frage] (http://stackoverflow.com/posts/38943771/edit) und füge diese wichtigen Teile hinzu. – ghoti

Antwort

0

diese Regel versuchen, ob ich erklären richtig

RewriteRule ^([.*])/([.*])/([.*])/([.*])$ index.php?$1=$2&$3=$4 

bitte verstehen, wenn etwas verpasst.

EDIT

in Ordnung, nach Ihnen Nachrichten und id sind statisch, sondern ihr Wert ist dynamisch versuchen Sie bitte die folgende Regel

RewriteRule ^(news)/([.*])/(id)/([.*])$ index.php?news=$1&id=$2 
+0

Danke für die Antwort. Dieser leitet/1/2/3/4/zur regulären URL um. Was ich brauche, ist Benutzer von http://example.com/news/newscategory/77654 zu http://example.com/news/newscategory/id/77654 umzuleiten, also kann ich den ID-Parameter holen. Der alte Code der Website verwendete die URL-Struktur ohne ID, die neue verwendet sie mit ID. Wenn der Benutzer also die alte URL besucht, erhält er nicht die einzelne Nachricht, sondern die Kategorie, da die ID nicht als Wert übergeben wird. Mein Htaccess/PHP-Code gibt mir die Möglichkeit,/key/value/key/value/urls zu haben, und ich möchte das verwenden. – eboye

+0

Etwas wie dieses: http: // stackoverflow.com/questions/14490416/htaccess-301-redirect-von-alt-url-struktur-zu-neu-url-struktur aber in meinem fall RewriteRule '^ ([^ /] +)/(. +) $/$ 1/$ 2/id [R = 301, L] 'ID wird am Ende hinzugefügt, ich möchte es vor dem letzten Teil von URL hinzufügen. Ich bin ziemlich schlecht mit Regex :( – eboye

+0

Bitte versuchen Sie den bearbeiteten Teil –

1

Sie verwenden können:

RewriteEngine On 

# add /id/ in /news/... URLS 
RewriteRule ^(news/[^\w-]+)/(\d+)$ /$1/id/$2 [R=301,L,NC] 

# front controller rule  
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule^index.php [L]