2009-07-11 2 views
0

Я был ложкой, подал этот файл htaccess из Gumbo, и я благодарен за него, поскольку я многому научился. Тем не менее, я сделал некоторые изменения и вернулся назад и вперед и сумел сделать несколько небольших изменений снова, он работает на 80%, но есть случай, когда он не работает:Удаление лишних символов, сгенерированных при повторной записи

Если я печатаю в http://www.example.com/view.php?t=45re он переписывает успешно но он делает это в URL http://www.example.com/ **? t = ** 45re Я не вижу, как это происходит. Больше всего помогает.

# REWRITE DEFAULTS 
RewriteEngine On 
RewriteBase/

# /view.php?t=h5k6 externally to /h5k6 
RewriteCond %{THE_REQUEST} ^GET\ /view\.php 
RewriteCond %{QUERY_STRING} ^([^&]*&)*t=([^&]+)&?.*$ 
RewriteRule ^view\.php$/[L,R=301] 

# /h5k6 internally to /view.php?t=h5k6 
RewriteRule ^([0-9a-z]+)$ view.php?t=$1 [L] 

ответ

1

Я думаю, вы имеете в виду this post. И я должен признать, что я забыл пустой запрос в подстановке, чтобы переопределить его, как уже упоминал Vinko.

Так попробуйте это:

# /view.php?t=h5k6 externally to /h5k6 
RewriteCond %{THE_REQUEST} ^GET\ /view\.php 
RewriteCond %{QUERY_STRING} ^([^&]*&)*t=([^&]+)&?.*$ 
RewriteRule ^view\.php$ /%2? [L,R=301] 

# /h5k6 internally to /view.php?t=h5k6 
RewriteRule ^([0-9a-z]+)$ view.php?t=$1 [L] 

%2 является обратной ссылкой на матч второй группы шаблона соответствующих RewriteCond директивы. Таким образом, %2 в этом случае проводит матч ([^&]+) в ^([^&]*&)*t=([^&]+)&?.*$.

+0

Хех. У меня все было в порядке, но я удалил те части, которые я не понимаю. Я также не буду ссылаться на исходный вопрос. :-) –

+0

В моей защите я - нуб, как будто вы оба были в какой-то момент. Кстати, я не удалял, потому что я не понимал, я удалил его, потому что я пытался использовать другие вещи, которые, как я думал, могут работать. :) – Abs

+0

Теперь он отлично работает. Может, если я удалю это ...;) – Abs

1

Не зная свое дело, ни что Гамбо сказал вам, от того, что я могу собрать из вашего вопроса (то есть вы хотите, чтобы строка запроса не передаются, когда внешне перенаправление), вы можете либо

RewriteRule ^view\.php$ /? [L,R=301] 

примечание дополнительные? или

RewriteRule ^view\.php$/[L] 

удаления внешнего редиректа и использовать внутренний.

+0

Я попробовал оба. Первый, будет перенаправлен на главную страницу без ничего после «/». Вторая также перенаправляется на главную страницу, но все еще показывает строку и строку запроса «/view.php?t=3ew». Гумбо, я думаю, был «/% 2» - я не был уверен, что это такое, поэтому я внес некоторые изменения, и я сделал некоторые вещи хуже, как! – Abs

+0

Да, не удаляйте части того, что работает, только потому, что вы не понимаете их! Вы могли бы спросить: «Что означает% 2?» перед удалением! : P –