% 2520 (двойной пробел) в URL для URL с пробелами - PullRequest
1 голос
/ 15 февраля 2012



Моя структура URL похожа на

http://www.example.com/folder/index.php?dir=dir1

Чтобы иметь возможность доступа к ней с

http://www.example.com/folder/dir1

и в то же время перенаправить 1-й URL на 2-йВо-первых, мой htaccess (в «папке») имеет вид

Options +FollowSymLinks 

RewriteEngine On
RewriteBase /folder

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]

RewriteCond %{QUERY_STRING} ^dir=(.*)$ [NC]
RewriteRule ^ %1? [L,R=301]

RewriteRule ^(.+)/? index.php?dir=$1 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} -d

RewriteRule ^(.*)$ index.php?dir=$1 [L,QSA]

Проблема в том, что если какое-либо имя каталога в URL-адресе содержит «пробел», URL-адрес показывает% 2520 вместо «пробел».

Пожалуйста, посоветуйте, как изменить htaccess, чтобы он отображал% 20 или, желательно, простое «пробел»?

1 Ответ

2 голосов
/ 15 февраля 2012

попробуйте добавить NE на перенаправление, т.е.

 RewriteRule ^ %1? [L,R=301,NE]

EDIT

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

Ниже приведена пара комментариев

Options +FollowSymLinks 

RewriteEngine On
RewriteBase /folder

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]

RewriteCond %{QUERY_STRING} ^dir=(.*)$ [NC]
RewriteRule ^ %1? [L,R=301]

#this looks redundant with last rule, and could be deleted?
RewriteRule ^(.+)/? index.php?dir=$1 [L,QSA]

#this says if not an existing file
RewriteCond %{REQUEST_FILENAME} !-f
#and this says if it IS an existing directory
#Is this what you wanted, or should it be not an existing directory i.e 
# RewriteCond %{REQUEST_FILENAME} !-d instead
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ index.php?dir=$1 [L,QSA]
...