Режим перезаписи;с / без косой черты в конце URL? - PullRequest
8 голосов
/ 22 февраля 2011

Я в основном попробовал это правило mode_rewrite ниже.Он работает с косой чертой в конце, но я хочу, чтобы он работал независимо от того, имеет ли он косую черту в конце или нет.По сути, я хочу, чтобы это было так, потому что некоторые люди считают это нормальным с косой чертой, а другие не понимают, почему я хочу, чтобы это работало, есть ли оно там или нет.

RewriteRule ^signup/register(.[^/]*) /signup/register.php [NC]

В основном это будет работатькак http://localhost/signup/register/, но если я удаляю / с конца, это дает ошибку 404.

Ответы [ 3 ]

20 голосов
/ 22 февраля 2011

Для подшаблона .[^/]* требуется хотя бы один произвольный символ.В вашем случае это, вероятно, та косая черта.

Вам лучше придерживаться одной записи (с косой чертой или без нее) и перенаправить неправильную запись на правильную, например:

# remove trailing slash
RewriteRule ^(.*)/$ /$1 [L,R=301]

# add trailing slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*[^/]$ /$0/ [L,R=301]
9 голосов
/ 12 марта 2014

простые старые регулярные выражения:

RewriteRule ^signup/register/?$ /signup/register.php [NC]
3 голосов
/ 29 ноября 2017
...    
RewriteRule ^(url-rewrite)/?$ page.php [NC]
...

?after / указывает, что не может быть ни одного, ни одного / после перезаписи URL, поэтому он будет принимать его с завершающим / или без него /

...