Как удалить косую черту в середине URL-адреса со строкой запроса?

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

http://hydesim.com?dll=40.71427,-74.00597&yd=10&zm=12&op=156

... становится этим:

http://meyerwe b.com/eric/tools/gmap/hydesim.html/?dll=40.71427,-74.00597&yd=10&zm=12&op=156

…вместо этого:

http://meyerwe b.com/eric/tools/gmap/hydesim.html?dll=40.71427,-74.00597&yd=10&zm=12&op=156

Итак, как мне удалить эту косую черту в середине URL при сохранении строки запроса? Я попробовал немного .htaccess подходит, но ничего не работает. Самая последняя попытка была:

RewriteRule ^(.+)html/(.+)$ /$1html$2 [R=301,L]

[ОБНОВЛЕНИЕ: Это правило не сработало, поэтому я отключил его, и теперь нет никаких переписываний в действительности.] Я не очень опытный с mod_rewriteкак вы уже догадались. Любая помощь с благодарностью!

2 ответа

Решение

Mod_rewrite в Apache не соответствует строке запроса в его RewriteRules. Вам даже не нужен QSA, если вы не перенаправляете на URL с указанной строкой запроса. Я проверил это локально на Apache 2.2.22 (родная версия OS X Lion), и это сработало.

RewriteRule ^(.+)html/$ /$1html [R=301,L]

РЕДАКТИРОВАТЬ: Если вы помещаете.htaccess в каталог gmap, вам придется использовать следующее:

RewriteEngine On
RewriteBase /eric/tools/gmap/
RewriteRule ^(.+)html/$ $1html [R=301,L]

Используйте флаг QSA ("Query String Append") вместо того, чтобы пытаться разобрать его самостоятельно. Что-то вроде:

RewriteRule ^(.+)html/(.+)$ /$1html [R=301,L,QSA]

Другие вопросы по тегам