Как избежать множественных слешей после доменного имени в URL с помощью htaccess? - PullRequest
0 голосов
/ 08 февраля 2012

У меня есть ссылка http://mysite.com/myname, которая показывает страницу профиля. Но если я использую несколько

косых черт, таких как http://mysite.com///myname, она также показывает страницу ..

Мой код htaccessэто:

RewriteCond %{REQUEST_URI} ^/(\w+)/?$ [NC]

RewriteRule ^ profile.php?username=%1 [L,QSA]

Как избежать этой проблемы?

Может кто-нибудь мне помочь?

Ответы [ 3 ]

0 голосов
/ 08 февраля 2012

Не знаю, почему вы действительно хотите заблокировать несколько слэшей, но есть способ сделать это:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/{2,} [NC]
RewriteRule ^ - [L,F]

Это даст Запрещенную ошибку, если URI имеет несколько слэшей при запуске, как ///mynameсгенерировать:

Запрещено

У вас нет прав доступа / myname на этом сервере.

0 голосов
/ 08 февраля 2012

Используйте этот код для удаления двойных слешей из URL.

RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} //
RewriteRule ^ $0 [R=302]

Измените 302 на 301, как только он заработает.

0 голосов
/ 08 февраля 2012

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

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /[^/\s]+\ HTTP

Это должно обеспечить соблюдение правила одной косой черты.Конечно, это также сделает невозможным использование чего-либо вроде http://example.com/myname/edit, но в случае необходимости это можно обойти, используя более сложное регулярное выражение.

...