2017-01-31 6 views
1

Пожалуйста, внимательно прочитайте перед маркировкой как дубликат.htacces drupal перенаправить из? Q = очистить URL-адрес

Я управляю сайтом drupal, и меня попросили очистить URL.

Итак, я создал файл .htaccess и включил чистые URL-адреса, как описано в документации drupal. Это было легко и прекрасно работает.

Проблема заключается в том, что добавлены тысячи внутренних ссылок (содержащих неприятный ?q=, предыдущий веб-мастер был немного ...).

Я не хочу редактировать все эти сайты, это слишком много. Вот почему я предпочитаю просто добавить 2 или 3 линии .htaccess.

пример редиректа будет:

http://www.tuteorica.com/?q=galeria/via/clases 
to 
http://www.tuteorica.com/galeria/via/clases 

До сих пор у меня есть этот .htaccess файл:

RewriteEngine on 
RewriteBase/

RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

#RewriteCond %{QUERY_STRING} ^q=(.*=)$ 
#RewriteRule^http://www.%{HTTP_HOST}/%1 [R=301,L] 

#RewriteCond %{query_string} q=(.*) 
#RewriteRule ^$ /%1? [R=301] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !=/favicon.ico 
RewriteRule^index.php [L,QSA] 

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

Я знаю, что это не лучшее решение, я просто хочу, чтобы он работал.

ответ

1

Вы можете использовать следующую HTAccess

RewriteEngine on 
#non www to www 
RewriteCond %{HTTP_HOST} !^www 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [NE,L,R] 
#/?q=foobar to /foobar 

RewriteCond %{THE_REQUEST} /\?q=([^\s]+) [NC] 
RewriteRule^/%1? [L,R] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)$ /?q=$1 [L] 
+0

Не могли бы вы положить это вместе с остальными линиями, я не хочу, чтобы натворить из-за неправильного порядка? Благодарю. И есть ли способ сделать это безопасным для символов без ASCII? – Falk

+0

@Falk Я обновил htaccess – starkeen

+0

Я видел, он отлично работает. – Falk