2016-05-21 1 views
1

В .htaccess файле моего сайта, у меня есть:301 редирект не работает, когда я думаю, что он кодируется правильно

Redirect 301 /?page_id=2276 http://www.orsgroup.com.au/community-newspaper/ 

Когда я загружаю http://www.orsgroup.com.au/?page_id=2276 он не перенаправляет на всех.

Не понимаю, почему. Ты можешь?

Обновление: Теперь я понимаю, что вы не можете перенаправлять URL-адреса с строками запросов, как указано выше.

Я добавил следующее в файл .htaccess:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_URI} ^/?page_id$ 
    RewriteCond %{QUERY_STRING} ^2276$ 
    RewriteRule ^(.*)$ http://www.orsgroup.com.au/community-newspaper/ [R=301,L] 
</IfModule> 

но страница http://www.orsgroup.com.au/?page_id=2276 не перенаправлять с этим обновлением.

Update2: Я пробовал:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/$ 
RewriteCond %{QUERY_STRING} ^?page_id=2276$ 
RewriteRule ^(.*)$ http://www.orsgroup.com.au/community-newspaper/ [R=301,L] 
</IfModule> 

Но перенаправляет http://www.orsgroup.com.au/community-newspaper/?page_id=2276

+1

Как и в случае с 'RewriteRules', команда' Redirect' работает с URL-адресами. Часть запроса _not_ считается частью URL-адреса, поэтому вы не можете сравниться с ней. Правило не указано «правильно». Прочтите это: https://simonecarletti.com/blog/2009/01/apache-query-string-redirects/ – arkascha

+0

Тот же вопрос, извините. '% {REQUEST_URI}' does _not_ содержит строку запроса. Взгляните на официальную документацию, она поставляется с действительно хорошими примерами: http://httpd.apache.org/docs/current/mod/mod_rewrite.html – arkascha

ответ

0

Попробуйте это:

RewriteEngine on 



RewriteCond %{THE_REQUEST} /\?page_id=2276 [NC] 
RewriteRule^http://www.orsgroup.com.au/community-newspaper/? [L,R] 

Или это:

RewriteEngine on 



RewriteCond %{QUERY_STRING} ^page_id=2276$ [NC] 
RewriteRule^http://www.orsgroup.com.au/community-newspaper/? [L,R] 
+1

Спасибо. Я должен это вспомнить. – Steve