Окончание с периодом с использованием Mod Rewrite - PullRequest
1 голос
/ 16 декабря 2009

Я хотел бы знать, как разрешить точки в конце моих URL. В настоящее время, если у меня был URL:

http://www.mydomain.com/Page/I.D.K.

Страница, содержащая информацию, вернется

Заголовок: I.D.K (без конечного периода)

Это также происходит с другой пунктуацией, и это влияет на мои страницы, отображающие информацию неправильно Спасибо за внимание, надеюсь, кто-нибудь знает решение.

В моем htaccess-файле используется следующее:

RewriteRule ^([^/.]+)/?$ /index.php?Page=$1 [L]
RewriteRule ^([^/.]+)/([^/]+)/?$ /index.php?Page=$1&Level1=$2 [L]
RewriteRule ^([^/.]+)/([^/]+)/([^/]+)/?$ /index.php?Page=$1&Level1=$2&Level2=$3 [L]
RewriteRule ^([^/.]+)/([^/]+)/([^/]+)/([^/]+)/?$ /index.php?Page=$1&Level1=$2&Level2=$3&Level3=$4 [L]

Ответы [ 2 ]

1 голос
/ 22 декабря 2009

ОК, проблема практически решена. & все еще ломает мои строки, если я пытаюсь выполнить Artist1 & Artist2, но я просто буду использовать замену строк, чтобы заменить этот символ чем-то другим. В любом случае, чтобы разрешить пунктуацию где угодно, даже в конце, я заменил все + на * в моих правилах перезаписи. Вот как это выглядит сейчас:

RewriteRule ^([^/.]*)/?$ /index.php?Page=$1 [L]
RewriteRule ^([^/.]*)/([^/]*)/?$ /index.php?Page=$1&Level1=$2 [L]
RewriteRule ^([^/.]*)/([^/]*)/([^/]*)/?$ /index.php?Page=$1&Level1=$2&Level2=$3 [L]
RewriteRule ^([^/.]*)/([^/]*)/([^/]*)/([^/]*)/?$ /index.php?Page=$1&Level1=$2&Level2=$3&Level3=$4 [L]

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

0 голосов
/ 16 декабря 2009

Я предполагаю, что это находится в http://www.mydomain.com/. Вот что я бы использовал для второго правила (которое затем можно перенести на другие правила):

RewriteRule ^([A-Za-z0-9\-,]+)/([A-Za-z0-9.\-,]+)/?$ /index.php?Page=$1&Level1=$2 [L]

Это будет соответствовать следующему: (и позволит использовать дефисы, запятые и точки для уровня 1)

IDK/Jump.ing.
IDK/Jump.ing./

Но не:

S$!LV/J

Я пытаюсь внести в белый список свои параметры (что-то вроде /[A-Z]/), а не занести их в черный список (/[^3-5]/). Я уверен, что есть аргументы для обоих вариантов, но мне нравится белый список, потому что у меня есть контроль над тем, что можно использовать. Если я не включу его в свой список, это недопустимый вариант. Конечно, если вы принимаете много опций, это может привести к очень длинным классам символов или еще много чего. Что делать, если кто-то пошел на http://www.mydomain.com/Page/I.D.K.&somevariable=somevalue? Это может потенциально сломать ваш сценарий (если человек умный). Ваш RewriteRule отправит их на /index.php?Page=Page&Level1=I.D.K.&somevariable=somevalue. Совсем не то, что вы ожидали.

...