RewriteRule, неправильно отображается URL - PullRequest
0 голосов
/ 15 ноября 2011

Я новичок в mod_rewrite и у меня есть эта проблема:

У меня есть рабочий редирект с mod_rewrite, мой .htaccess:

RewriteEngine on
RewriteRule ^microsite/([^/\.]+)/$ micrositecontroller.php?name=$1 [L]

micrositecontroller.php отображает только текст

В браузере, когда я ввожу свой URL:

локальный / проект / микросайт / тест /

Я перенаправлен туда, куда хотел, но когда я вхожу:

локальный / проект / микросайт / тест

Он все еще перенаправляет туда, куда хотел, но URL становится таким:

локальный / проект / микросайт / тест /? Имя = тест

Теперь я хочу, чтобы трейлинг "/? Name = test" не появлялся.

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

Ответы [ 2 ]

0 голосов
/ 15 ноября 2011

То, что вы хотите:

RewriteEngine on
RewriteRule ^microsite/([^/\.]+)/?$ micrositecontroller.php?name=$1 [L]
# Note the "?"-------------------^

Для размещения как заканчивая косой чертой, так и без косой черты. Проблема с включением (или выключением) косой черты заключается в том, что apache принудительно перенаправляет браузер, поэтому ?name=test отображается в строке адреса браузера.

Это потому, что mod_dir и директива DirectorySlash on создают помехи. Директива DirectorySlash указывает apache перенаправлять браузер, когда он обращается к тому, что выглядит как каталог (в вашем случае localhost/project/microsite/test к URI smae, за исключением косой черты.

0 голосов
/ 15 ноября 2011

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

RewriteEngine on
RewriteRule ^microsite/([^/\.]+)$ micrositecontroller.php?name=$1 [L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...