2015-05-29 2 views
2

Я был долго читателем, но это мой первый пост. Обычно я могу решить проблему и решить проблему по всем вопросам, которые у меня есть, но это заняло у меня много часов, и я в недоумении..htaccess - Полоса символов '% 26' от url

С другой стороны, я многому научился о составе кода .htaccess, в отличие от всех сокращений и склеивания, которые я делал все эти годы.

Проблема в том, что я перехожу от старой системы CMS к новой. В старой системе отображается [&] амперсанд символов в URL-адресе в шестнадцатеричном формате «% 26». Новая система CMS полностью разделяет это. Я пытаюсь удалить это с помощью правила перезаписи.

The objective is to make this url: 
http://domain.com.au/drums-%26-percussion/ 

Redirect to this: 
http://domain.com.au/drums-percussion/ 

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

Example A) 
RewriteRule ^(.*)\%26(.*)$ http://domain.com.au/$1-$2 [L,NE,N,R=301] 

Это выше пример работает, если я на самом деле использовать &, а не формат шестигранной% 26. По какой-то причине мне неизвестно, что я не могу получить огонь. например, ничего не происходит. Я устал так много изменений вокруг% 26.

Example B) 
RewriteCond %{THE_REQUEST} ^(.*)(-%26-)(.*) [NC] 
RewriteRule^http://domain.com.au/$1-$2 [L,NE,R=302] 

Я где-то читал, что% 26 нужно было положить в состояние, которое нужно поднять. Поэтому я попробовал это. Он читает% 26 и отключает перенаправление. Проблема в том, что я не передаю значения $ 1 $ 2. Конечный результат, который я получаю с этим кодом:

Start: 
http://domain.com.au/drums-%26-percussion/ 
Redirect: 
http://derringers.testpad.com.au/- 

Я ценю любой совет, это вопрос. Спасибо.

ответ

1

В качестве documentation состояний:

На первом RewriteRule, он сравнивается с (%) расшифрованный URL-путь запроса.

Это означает, что URL вы видите в браузере, как:

http://domain.com.au/drums-%26-percussion/ 

, на самом деле:

http://domain.com.au/drums-&-percussion/ 

и RewriteRule пытается соответствовать /drums-&-percussion

Учитывая, что, правильный RewriteRule для соответствия URL-адресу:

RewriteRule ^(.*)-&-(.*)$ http://domain.com.au/$1-$2 [L,NE,N,R=301] 
+0

Благодарим за разъяснения. Я использовал правильный процесс, но по какой причине не смог увидеть/проверить требуемый результат. Иногда вы можете обойти и пропустить ответ, глядя прямо перед вами. Вышеупомянутый код перезаписи работает отлично. Спасибо. – MetalMonkey

+0

Я хотел бы проголосовать за это как правильно, но мне не хватает репутации. Еще раз спасибо за ваше время. – MetalMonkey

Смежные вопросы