Перезапись URL-адреса незаметно - Как предотвратить перезапись URL-адреса в адресной строке? - PullRequest
1 голос
/ 14 августа 2011

Я просмотрел другие темы, включая эту: Mod_rewrite незримо: работает, когда целью является файл, а не когда это каталог , но я не могу найти решение своей проблемы.

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

RewriteRule ^([a-zA-Z0-9_-]+)$ ./index.php?s=$1 [L,NC]
RewriteRule ^([a-zA-Z0-9_-]+)/$ ./index.php?s=$1 [L,NC]

Для этого нужно написать что-нибудь вроде http://myaddress/parameter в http://myaddress/index.php?s=parameter и показать этот новый переписанный адрес в адресной строке браузера.

Как я могу сделать переписывание, не показывая переписанный URL в адресной строке?


Редактировать

Это содержимое моего файла .htaccess:

DirectoryIndex index.php

RewriteEngine On

RewriteRule ^([a-z0-9_\-]+)/?$ index.php?s=$1 [L,NC,QSA]
RewriteRule ^([a-zA-Z0-9_-]+)\/?([a-zA-Z0-9_-]+)\/?$ index.php?u=$1&s=$2 [L,NC]
RewriteRule ^([a-zA-Z0-9_-]+)\/?([a-zA-Z0-9_-]+)\/?([a-zA-Z0-9_-]+)\/?$ index.php?u1=$1&u2=$2&s=$3 [L,NC]

Ответы [ 2 ]

1 голос
/ 14 августа 2011

1.Нет необходимости в 2 правилах, выполняющих одну и ту же работу (единственное отличие - наличие конечного слеша).

2.Нет необходимости иметь a-zA-Z в шаблоне, если у вас есть флаг [NC] - достаточно a-z.

3.Попробуйте правило без ./

Учитывая все вышеперечисленное правило станет:

RewriteRule ^([a-z0-9_\-]+)/?$ index.php?s=$1 [L,NC,QSA]

PS Я также добавил флаг QSA, чтобы сохранить оригиналСтрока запроса (если имеется).

Правило проверено и работает нормально.Если он по-прежнему не работает, отправьте ALL правила переписывания, которые у вас есть.

1 голос
/ 14 августа 2011

Это должно работать:

RewriteEngine On

RewriteRule ^([-a-zA-Z0-9_]+)$ index.php?s=$1 [L]
RewriteRule ^/?$ index.php [L]
...