Ru-Board.club
← Вернуться в раздел «Web-программирование»

» mod_rewrite: документация, готовые решения, вопросы

Автор: diskoff
Дата сообщения: 17.01.2015 23:12
мне надо c https на http , т.к. когда захожу на сайт по протоколу https меня перебрасывает на другой домен , следовательно надо сделать редирект с https на http ТАК ?

Автор: Mavrikii
Дата сообщения: 17.01.2015 23:20
diskoff

Цитата:
т.к. когда  захожу на сайт по протоколу https  меня перебрасывает на другой домен

ну так поэтому, видимо, и не срабатывает предыдущее правило в другой теме.

постарайтесь писать предложения аккуратно.
Автор: diskoff
Дата сообщения: 17.01.2015 23:28

Цитата:
ну так поэтому, видимо, и не срабатывает предыдущее правило в другой теме.

а как быть ?

Цитата:
https://wiki.apache.org/httpd/RewriteHTTPToHTTPS

данная статья не подходит ...
Автор: Mavrikii
Дата сообщения: 17.01.2015 23:29
diskoff

Цитата:
данная статья не подходит

значит что то делаете не так.


Цитата:
а как быть ?

для начала - ответить четко. при заходе по https вас куда то перекидывает?
если да, то до вашего правила может и не доходить - нужно смотреть где происходит редирект.
Автор: diskoff
Дата сообщения: 17.01.2015 23:41
Под словосочетанием
Цитата:
данная статья не подходит ...
подразумевалось-
в статье показан редирект от http к httpS , но мне нужен редирект от httpS к http

Если https просто заменить на http то данная статья подойдёт.
Но меня берут сомнения...
Автор: Mavrikii
Дата сообщения: 17.01.2015 23:43
diskoff

Цитата:
в статье показан редирект от http к httpS , но мне нужен  редирект от httpS к http

а у вас не работает логика? помоему, когда приведен один пример, то второй просто очевиден.


Код: RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule ^/?(.*) http://%{SERVER_NAME}/$1 [R,L]
Автор: diskoff
Дата сообщения: 18.01.2015 01:14
Нет не работает.
Вставил
RewriteCond %{HTTPS} on
RewriteRule ^/?(.*) http://%{SERVER_NAME}/$1 [R,L]

в .htaccess , почистил кеш сайта , на всякий пожарный - всё равно
при заходе на сайт через https перебрасывает на другой сайт, вернее в браузере отображается мой домен
Пример:
(В яндексе)
https://mysite.ru/ , а содержимое страницы принадлежит другому домену, пусть another.ru

Точнее не могу расписать.
Автор: Mavrikii
Дата сообщения: 18.01.2015 01:31
diskoff
причин может быть много.
от неправильно настроено сервера, до установленного и используемого mod_proxy (это все говорит о том, что не меняется адрес домена. может, конечно, еще использоваться и iframe, но это нужно видеть)
слишком мало информации, чтобы сказать в чем проблема.
раз уже что то открывается другое, значит до этих правил и дело не дойдет.

раз сами не разбираетесь в конфигурации сервера (или к ней нет доступа), то может стоит спросить о причине у поддержки хостера.
Автор: GeMir
Дата сообщения: 07.02.2015 13:28
Есть простенький сайт с горсткой адресов вида: домен/скрипт.php и домен/скрипт.php?переменная=число.

Хочется, чтобы первые превращались в домен/скрипт/ а вторые в домен/скрипт/число.

Буду признателен за помощь.
Apache 2.2.16. В качестве шаблонизатора используется Smarty.
Автор: unreal666
Дата сообщения: 10.04.2015 12:13
В Apache 2.4 для RewriteRule есть флаг QSD, который грохает строку запроса.
А как такое реализовать в Apache 2.2? (точнее, чтобы работало и в 2.2 и в 2.4)
Автор: Mavrikii
Дата сообщения: 10.04.2015 12:23
unreal666
http://www.philipphoffmann.de/blog/2012/08/16/how-to-discard-the-query-string-in-a-rewriterule-apache-mod_rewrite/
Автор: unreal666
Дата сообщения: 10.04.2015 12:30
del

Добавлено:
Еще в Apache 2.4 есть флаг END, который останавливает процесс преобразования и предотвращает дальнейшее применение правил .htaccess.
А в Apache 2.2 как такое реализовать?
Автор: Mavrikii
Дата сообщения: 10.04.2015 19:00
unreal666

Цитата:
А в Apache 2.2 как такое реализовать?

комбинация [L] и определение подзапроса
Автор: Sutar
Дата сообщения: 07.05.2015 16:11
Здравствуйте, помогите пожалуйста закрыть все ссылки.

К примеру на сервере есть такие ссылки:


Код: .../site.ru/style.css
.../site.ru/index.php
.../site.ru/user.php
.../site.ru/js.js
.../site.ru/images/title.png
Автор: Mavrikii
Дата сообщения: 07.05.2015 22:02
Sutar

Цитата:
если попытаться открыть файл, будет страница 404

какой файл?


Цитата:
стили и т.д. будут закрыты

что значит "закрыты"? выдано 404? ну так поместите все в отдельную папку с каким нибудь странным названием и на нее переделывайте через mod_rewrite
Автор: Sutar
Дата сообщения: 07.05.2015 22:48
Mavrikii

Цитата:
какой файл?  

все файлы. т.е. все варианты адресной строки - закрыть.
а открытие варианты - доступными.

Открытий вариант:

Цитата:
RewriteRule ^profile/$ user.php [NS,L]

Автор: Mavrikii
Дата сообщения: 08.05.2015 05:16
Sutar
добавьте в конце правило запрещающее всё. флаг L в предыдущих правилах его обойдет
что то такого типа

RewriteRule . - [R=404,L]
Автор: Sutar
Дата сообщения: 08.05.2015 18:18
Mavrikii
ранее открытие ссылки - так-же закрываются.
Автор: Mavrikii
Дата сообщения: 08.05.2015 19:06
Sutar

Цитата:
ранее открытие ссылки - так-же закрываются.

примеры, примеры.. без них вы говорите о своем, а собеседник о своем.
Автор: Sutar
Дата сообщения: 09.05.2015 00:00
Mavrikii

Цитата:
примеры



Код: RewriteRule ^profile/$ user.php [NS,L]
RewriteRule . - [R=404,L]
Автор: Mavrikii
Дата сообщения: 09.05.2015 00:18
Sutar

Цитата:
такой код, закрывает доступ к адресу ...site.ru/profile/

ай, такое ощущение, что я в детсаду - никакой самостоятельной инициативы

Код: RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule . - [R=404,L]
Автор: alfaservice
Дата сообщения: 12.05.2015 19:32
Здравствуйте!

Подскажите как мне переделать правила htaccess из Вордпрес.


Код:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Автор: Mavrikii
Дата сообщения: 12.05.2015 20:08
alfaservice
данные правила не срабатывают если файл или папка физически существуют.

Цитата:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

переадресация идет только если папки или файла нет.


Цитата:
Как папку открыть для индексации поисковыми ботами, на деле получается что форум не индексируется вовсе!

выдается 403? ну так у вас запрещено создание списка файлов сервером. нужно либо самостоятельно генерить список файлов, либо добавить для нее

Options Indexes
Автор: alfaservice
Дата сообщения: 12.05.2015 21:10

Цитата:
выдается 403?


нет, но и факт в том что в поисковиках нет индекса категорий, тем и т.д. выдаются только правила форума в поиске... но... форум генерит site map сам. Не пойму почему тогда не индексируется весь форум может здесь что есть?


Код:
#    Mod_security can interfere with uploading of content such as attachments. If you
#    cannot attach files, remove the "#" from the lines below.
#<IfModule mod_security.c>
#    SecFilterEngine Off
#    SecFilterScanPOST Off
#</IfModule>

ErrorDocument 401 default
ErrorDocument 403 default
ErrorDocument 404 default
ErrorDocument 405 default
ErrorDocument 406 default
ErrorDocument 500 default
ErrorDocument 501 default
ErrorDocument 503 default

<IfModule mod_rewrite.c>
    RewriteEngine On

    #    If you are having problems with the rewrite rules, remove the "#" from the
    #    line that begins "RewriteBase" below. You will also have to change the path
    #    of the rewrite to reflect the path to your forum installation.
    #RewriteBase /forum

    #    This line may be needed to enable WebDAV editing with PHP as a CGI.
    #RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^(data/|js/|styles/|install/|favicon\.ico|crossdomain\.xml|robots\.txt) - [NC,L]
    RewriteRule ^.*$ index.php [NC,L]
</IfModule>
Автор: Mavrikii
Дата сообщения: 12.05.2015 21:23
alfaservice
содержимое robots.txt проверяли?


Цитата:
#RewriteBase /forum

для подпапки может потребоваться
Автор: alfaservice
Дата сообщения: 13.05.2015 17:44

Цитата:
содержимое robots.txt проверяли?


у меня сейчас нет robots.txt нигде


Цитата:
#RewriteBase /forum


раскоментировал... посмотрю что получится
Автор: Mavrikii
Дата сообщения: 13.05.2015 18:54
alfaservice

Цитата:
у меня сейчас нет robots.txt нигде  

если в браузере открывается вам, значит и открывается (если не требуется авторизация) поисковику. далее уже нужно смотреть на детали не относящиеся к данной теме.
Автор: alex0413
Дата сообщения: 16.05.2015 23:14
Встретился с проблемой. У меня есть index.php у которого есть несколько параметров. Первый параметр method=..., остальные параметры могут быть разные. Как можно сделать такое перенаправление, что бы перейдя по ссылке site.ru/index.php?method=user.get&id=1 получали site.ru/user.get?id=1.
Пробовал онлайн генератор. Получил такое правило:

Код: RewriteRule ^([^/]*)$ /index.php?method=$1 [L]
Автор: Mavrikii
Дата сообщения: 16.05.2015 23:24
alex0413

Цитата:
но это вызывает ошибку: Request exceeded the limit of 10 internal redirects due to probable configuration error.

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




Цитата:
что бы перейдя по ссылке site.ru/index.php?method=user.get&id=1

делаете RewriteCond на наличие нужного параметра

Вот так, к примеру
RewriteCond %{QUERY_STRING} ^method=(.*)&?(.*)
RewriteRule ^.* /%1?%2 [R=302,L]

R стоит если хочется перекинуть юзверя на "правильный" URL.

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

RewriteCond %{REQUEST_URI} !^/?index.php
RewriteRule ^([^/]*)$ /index.php?method=$1 [L]

не проверял

ps: точнее даже так

Код: RewriteCond %{QUERY_STRING} ^method=([^&]+)&?(.*)
RewriteRule . /%1?%2 [R=302,L]

RewriteCond %{REQUEST_URI} !^/?index.php
RewriteRule ^([^/]*)$ /index.php?method=$1 [L,QSA]
Автор: alex0413
Дата сообщения: 18.05.2015 17:23
Mavrikii
спасибо, вот такое работает отлично

Код: RewriteRule ^([a-z.]+)/?$ index.php?method=$1 [QSA]

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445

Предыдущая тема: PHP: Регулярные выражения (RegExp, Regular, eregi, preg)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.