2017-02-14 11 views
2

Я хочу иметь персонализированных URLs, где человек получает почтовую программу, которая имеет свои изнаночной на ней, и перенаправить их на целевую страницу, которая получает свое имя с помощью строки запросакаталог Перенаправление с периодом для запроса строки в HTAccess

URL-адрес будет как

mywebsite.com/phx/joe.smith

Я хотел бы, чтобы перенаправить этот трафик на

mywebsite.com/youngstown/index.php?first=joe & последний = smith

Это должно быть 301 редирект, нечувствительный к регистру. Я могу сделать это, если каталог был/phx/firstname/lastnaname, но мне он нужен с точкой между первым и последним, а не каталогом.

То, что я до сих пор

RewriteEngine on 
RewriteBase/

RewriteRule ^phx\/([^\/]+)\/([^\/]+)\/? youngstown/index.php?FirstName=$1&LastName=$2 [NC,R=301,L] 
RewriteRule ^phx\/([^\/]+)\/? youngstown/index.php?FirstName=$1 [NC,R=301,L] 

Любая помощь будет высоко ценится!

ответ

2

Во-первых, вам не нужно избегать косых червей /. Кроме того, вы почти там. Основное различие составляет \. против /, т.е.

RewriteRule ^phx/(.+?)\.(.+)/?$ youngstown/index.php?first=$1&last=$2 [R,NC,L] 
0

Комплексное решение может быть:

RewriteEngine on 
RewriteRule ^phx/([^./]+)\.([^./]+)/?$ /youngstown/index.php?FirstName=$1&LastName=$2 [NC,R=301,L] 
RewriteRule ^phx/([^./]+)/?$ /youngstown/index.php?FirstName=$1 [NC,R=301,L] 

Как говорит Олаф, нет необходимости, чтобы избежать косых черт. Я сопоставляю здесь «не точку или косую черту». И добавляя $, чтобы отличить конец матча, и удаляете RewriteBase, что не нужно.

Альтернативного решение

В качестве альтернативы вы можете использовать одно правило, которое бы установить пустые параметры для LastName когда нет:

RewriteEngine on 
RewriteRule ^phx/([^./]+)(?:\.([^./]+))?/?$ /youngstown/index.php?FirstName=$1&LastName=$2 [NC,R=301,L] 

 Смежные вопросы

  • Нет связанных вопросов^_^