2013-06-05 3 views
0

Я думаю, что я пытаюсь достичь невозможного результата.Переписать URL Параметр, содержащий точку

Сценарий PURL-Mailing, и у меня уже есть URL-адрес, переписанный для соответствия URL-адресу, отправленному клиенту.

Клиент вводит сайт по следующей области: http://domain.com/UserName

Переменная ИмяПользователя представляет GET-переменной, что эквивалентно http://domain.com/index.php?user=UserName

я достичь это со следующими правилами перезаписи:

RewriteBase/

RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?name=$1 [QSA] 
#This works perfect and translates to http://domain.com/UserName 

RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?name=$1 [L] 
#This achieves the goal but does not reflect in the URI I want: 
#http://domain.com/UserName 

Чтобы идти дальше, есть также некоторые имена, содержащие точку в имени, как A.Jackson, которые также должны рассматриваться как UserName. Поскольку это только 13 Name, я мог бы их реализовать вручную. Я не знаю, как я могу предотвратить эту часть после того, как dot будет обрабатываться как расширение файла. Есть ли способ написать пользовательский дескриптор в * mod_rewrite * для этих? И если да, может ли кто-нибудь объяснить мне, как?

Спасибо заранее и с наилучшими пожеланиями!

+0

Добавить точку в свое регулярное выражение '[A-Za-Z0-9_-. ] ' – Robert

+0

Эй, Роберт, спасибо, но это вызывает внутреннюю ошибку сервера. Не работает для меня! – codedrop

+1

Потому что точка должна быть экранирована с помощью \ – Robert

ответ

2

ОК попытки ниже

 

    RewriteCond %{REQUEST_FILENAME} !(img|anyother folders that you want to ignore|anyother folders that you want to ignore|...) 
    RewriteCond %{SCRIPT_FILENAME} !-f 
    RewriteRule ^([a-zA-Z0-9_-]*[\.]*[a-zA-Z0-9_-]+)[/]*$ test.php?name=$1 [L] 

заменить «anyother папки, которые вы хотите игнорировать» с именем папки, которые вы хотите игнорировать. Отделите каждую папку «|»

Вы также должны обеспечить полный путь к CSS, изображениям или любым другим ссылкам, используемым в вашей веб-странице при использовании функции URL переписывания

+0

Идеальный ответ! Большое спасибо за вашу поддержку! :) – codedrop

2

Вот ваш исправить

RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^([a-zA-Z0-9_-]*[\.]*[a-zA-Z0-9_-]+)$ index.php?name=$1 [L] 
+0

Большое спасибо. Это работает для меня! Превосходство в исполнении! – codedrop

+0

Шаг вперед: Возможно ли также использование дополнительной косой черты? Например: http://www.jetztzuprimagas.de/A.Armbruster/ – codedrop

+1

Вместо RewriteRule^([a-zA-Z0-9 _-] * [\.] * [A-zA-Z0-9 _-] +) $ index.php? name = $ 1 [L] использовать RewriteRule^([a-zA-Z0-9 _-] * [\.] * [a-zA-Z0-9 _-] +) [/] * $ test. php? name = $ 1 [L] – Lepanto

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