1

Тема: Пере адресация на страницу ошибки при наличие строки в URL

одскажите как можно переадресовать через .htaccess запросы в URL которых есть например строка 'qwwe'. Строка может встретиться в любом месте
пробовал

RewriteEngine On
Options +FollowSymLinks
RedirectMatch /(qwwe) http://MySite.com/index.php/information/72

И множество различных типа
RedirectMatch (qwwe) http://MySite.com/index.php/information/72
RedirectMatch (.*)(qwwe)(.*) http://MySite.com/index.php/information/72

и т.д. и т.п. Ни чего не получается.

2

Re: Пере адресация на страницу ошибки при наличие строки в URL

Попробуйте так:

RewriteEngine on
RewriteBase /
RewriteRule ^.*qwwe.*$ /index.php/information/72 [L]

3 (изменено: ru.usa, 2011-06-02 07:03:03)

Re: Пере адресация на страницу ошибки при наличие строки в URL

RewriteEngine On

RewriteCond %{REQUEST_URI} /sitemap.xml
RewriteRule (.*) /http://mySite.com/index.php?option=com_xmap&sitemap=1&view=xml  [L]

RewriteBase /
RewriteRule ^.*com_content.*$ /index.php/information/72 [L]

ErrorDocument 404 http://mySite.com/index.php/information/72

Не работает. Кстати первый по "sitemap.xml" работает.

4 (изменено: ru.usa, 2011-06-02 07:03:46)

Re: Пере адресация на страницу ошибки при наличие строки в URL

Пробовал ещё так

RewriteRule .*com_content.* http://mySite.com/index.php/information/72 [L]

Не получается

5

Re: Пере адресация на страницу ошибки при наличие строки в URL

Попробуйте так:

RewriteEngine on
RewriteCond %{REQUEST_URI} com_content
RewriteRule .* /index.php/information/72 [L]

Или еще проще, одной строкой:

RedirectMatch com_content /index.php/information/72

6

Re: Пере адресация на страницу ошибки при наличие строки в URL

Не работает.
вот весь мой .htaccess

RewriteEngine On
Options +FollowSymLinks

RewriteCond %{HTTP_HOST} ^www.gbi-5.net
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html?)\ HTTP/
RewriteRule ^index\.(php|html?)$ http://www.gbi-5.net/ [R=301,L]

RewriteCond %{REQUEST_URI} /sitemap.xml
RewriteRule (.*) /http://gbi-5.net/index.php?option=com_xmap&sitemap=1&view=xml  [L]

#RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
#RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
#RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
#RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
#RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
#RewriteRule .* index.php [F]
#RewriteCond %{REQUEST_URI} !^/index\.php
#RewriteCond %{REQUEST_URI} (/[^.]*|\.(php|html?|feed|pdf|raw))$ [NC]
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
#RewriteRule .* index.php [L]

#RedirectMatch (.*)\cmd.exe$ http://www.microsoft.com$1

RewriteCond %{REQUEST_URI} com_content
RewriteRule .* /index.php/information/404 [L]

ErrorDocument 404 http://gbi-5.net/index.php/information/404

А вот адреса
http://www.gbi-5.net/index.php/index.ph … ;Itemid=17
http://www.gbi-5.net/index.php?option=c … n&id=2
которые не должны по идее открываться, а должны попадать на
http://gbi-5.net/index.php/information/404

7

Re: Пере адресация на страницу ошибки при наличие строки в URL

Попробуйте REQUEST_URI заменить на QUERY_STRING, например. И поднимите условие в самый верх, чтобы быть уверенным, что до него доходит выполнение.

8

Re: Пере адресация на страницу ошибки при наличие строки в URL

.htaccess:

RewriteEngine On
Options +FollowSymLinks

RewriteCond %{QUERY_STRING} com_content
RewriteRule .* http://gbi-5.net/index.php/information/404 [L]

RewriteCond %{HTTP_HOST} ^www.gbi-5.net
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html?)\ HTTP/
RewriteRule ^index\.(php|html?)$ http://www.gbi-5.net/ [R=301,L]

RewriteCond %{REQUEST_URI} /sitemap.xml
RewriteRule (.*) /http://gbi-5.net/index.php?option=com_xmap&sitemap=1&view=xml  [L]

ErrorDocument 404 http://gbi-5.net/index.php/information/404

#RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
#RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
#RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
#RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
#RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
#RewriteRule .* index.php [F]
#RewriteCond %{REQUEST_URI} !^/index\.php
#RewriteCond %{REQUEST_URI} (/[^.]*|\.(php|html?|feed|pdf|raw))$ [NC]
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
#RewriteRule .* index.php [L]

#RedirectMatch (.*)\cmd.exe$ http://www.microsoft.com$1

При попытке зайти на
http://www.gbi-5.net/index.php/index.ph … ;Itemid=17
идёт переадресация на
http://gbi-5.net/index.php/information/ … n&id=2
и вываливается ошибка 500 (На этой странице обнаружена циклическая переадресация)

Я так понимаю что после вопросительного знака строка запроса как-то все карты путает.

9

Re: Пере адресация на страницу ошибки при наличие строки в URL

Попробуйте добавить пустой параметр, чтобы хвост не добавлялся.

RewriteRule .* http://gbi-5.net/index.php/information/404?empty [L]

10

Re: Пере адресация на страницу ошибки при наличие строки в URL

Спасибо... сам бы не догадался. Логика во всех этих инструкциях Апычу если и нащупывается, то очень туманная. Очень хотел бы найти книгу достойную по апычу как справочное руководство или даже чтиво в метро. Не подскажете?

11

Re: Пере адресация на страницу ошибки при наличие строки в URL

ru.usa сказал:

Очень хотел бы найти книгу достойную по апычу как справочное руководство

Соглашусь, что mod_rewrite - не самый простой механизм для изучения, поэтому начать лучше с простого. В документации есть очень не плохие примеры: http://httpd.apache.org/docs/2.2/rewrite/intro.html

Книжки по Apache можно поискать на Озоне, например.