.htaccess URL переписать (разбить один объект на два)

#.htaccess #url #rewrite

#.htaccess #url #переписать

Вопрос:

Попробовал несколько предложений с этого сайта, поиска в Google и других источников, но безрезультатно.

Я хотел бы иметь правило перезаписи, которое принимает URL-адрес, подобный этому:

 http://somesite.com/abc123
  

и изменяет его на это:

 http://somesite.com/abc/123
  

abc123 — это динамический набор, но он всегда будет состоять из (буквенных) (числовых) — b256, d1, c3456 и т.д.

Есть ли какой-либо способ сделать это с помощью .htaccess? Все, что я пытаюсь, просто не работает.

Ответ №1:

Это можно сделать.. довольно легко, на самом деле предполагая, что вы всегда будете разделяться на буквы и числа …. ваш .htaccess скажет:

 Rewrite on
RewriteRule ^([A-z] )([0-9] )(.*)   $1/$2$3             [QSA,L]
  

Обратите внимание, что QSA добавляет любые строки запроса, а L останавливает здесь правило. Остальное для хорошей оценки … на случай, если есть что-то вроде /abc123.html тогда это стало бы /abc/123.html

Ответ №2:

Некоторое время назад у меня были проблемы с этим. .htaccess не нужно его создавать, ему просто нужно его обработать. Я надеюсь, что я прав с этим 🙂

Это обработает его в .htaccess

 Rewrite on
RewriteRule ^([^/]*)([^/]*)$ index.php?varone=$1amp;vartwo=$2 [L]
  

Но вам нужно будет связать его на своей странице таким образом

 http://somesite.com/abc/123
  

Затем вы можете запросить переменные с помощью php

     $varone = htmlspecialchars($_REQUEST["varone"]);
    $varone = preg_replace("/[^A-z]/","", $varone);


    $vartwo = htmlspecialchars($_REQUEST["vartwo"]);
    $vartwo = preg_replace("/[^0-9]/","", $vartwo);