Вы не зашли.
#1.
TLENS
Off
(14)
Moderator
2013.11.09 17:05
У меня сменилась структура сайта и все ссылки надо переправлять на другой адрес с кодом 301 Moved Permanently
бывший адрес /view/id.html текущий /y/id.html
Добавлено спустя 2 минуты 23 секунды: Да и еще если не сложно дайте пример реврайта на с /y/ID.html на /yfile/view.php?id=ID
Код:
rewrite ^/view/(.+)\.html$ /y/$1.html permanent; |
rewrite ^/y/(.+)\.html$ /yfile/view.php?id=$1 permanent; |
если я правильно тебя понял
#3.
TLENS
Off
(14)
Moderator
2013.11.12 02:02
Я тоже так делал. Просто парился с location тулит туда регулярку.
Сделал просто location /view/ {
rewrite...
}
#4.
TLENS
Off
(14)
Moderator
2013.11.22 01:01
Выручай, опять изменилась структура сайта. А поисковики уже успели сожрать кучу линков.
Надо перекидать юзеров на адрес типо такого /y/(id).html сейчас все линки идут на /y/v?(id)
Вот мой конфиг:
Код:
server { |
server_name test.v-s.mobi test.video-saver.mobi *.test.v-s.mobi *.test.video-saver.mobi; |
listen 188.93.18.106:80; |
##access_log /home/www/log/video-saver_mobi_access.log; |
error_log /home/www/log/test.video-saver_mobi_error.log; |
charset utf-8; |
client_max_body_size 1m; |
root /home/www/test.video-saver.mobi; |
index index.php; |
location /v/ { |
if ($host ~* "^down\.(.*)$") { |
rewrite ^(.*)$ /vkontakte/download.php last; |
} |
} |
error_page 404 /404.php; |
location ~ /(DATA|SYSTEM|TMPFS)/(.*?)$ { |
deny all; |
return 404; |
} |
location ~ \.(dat|conf)$ { |
deny all; |
return 404; |
} |
|
location /view/ { |
rewrite ^/view/([a-zA-Z0-9\-_]+?)\.html.*$ /y/v?$1 permanent; |
} |
location /y/v { |
rewrite ^/y/v(.*)$ /youtube/videoView.php$1 last; |
} |
location /y/s { |
rewrite ^/y/s(.*)$ /youtube/videoSearch.php$1 last; |
} |
location /y/i { |
rewrite ^/y/i(.*)$ /youtube/image.php$1 last; |
} |
location /v/s { |
rewrite ^/v/s(.*)$ /vkontakte/videoSearch.php$1 last; |
} |
location /v/v { |
rewrite ^/v/v(.*)$ /vkontakte/videoView.php$1 last; |
} |
location ~ /(DATA|SYSTEM|TMPFS)/(.*?)$ { |
deny all; |
return 404; |
} |
location ~ \.php$ { |
fastcgi_intercept_errors on; |
fastcgi_split_path_info ^(.+\.php)(/.+)$; |
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini |
# |
# # With php5-cgi alone: |
# fastcgi_pass 127.0.0.1:9000; |
# # With php5-fpm: |
fastcgi_pass unix:/var/run/php5-fpm.sock; |
fastcgi_index index.php; |
include fastcgi_params; |
} |
|
location ~ /\.ht { |
deny all; |
return 404; |
} |
} |
Пытался сделать что то вроде этого
Код:
location /y { |
rewrite ^/y/v?([a-zA-Z0-9\-_]+)$ /y/$1.html permanent; |
rewrite ^/y/([a-zA-Z0-9\-_]+)\.html.*?$ /youtube/videoView.php?$1 last; |
} |
Вроде норм при переходе по адресу /y/(id).html
Но при переходе по адресу /y/v?(id) кидает на /y/v.html?(id)
Добавлено спустя 4 минуты 5 секунд: Да и еще одно как строго указать 11 вхождений? Пробовал {11} типа rewrite ^/y/v?([a-zA-Z0-9\-_]{11})$ /y/$1.html permanent; не проходит на валидность
подозреваю, что перед
? должен быть обратный слеш.
Код:
^/y/([a-zA-Z0-9\-_]+)\.html.*?$ /youtube/videoView.php?$1 last; |
вместо last, вероятно, должно быть break.
#6.
TLENS
Off
(14)
Moderator
2013.11.22 15:03
Gemorroj написал:подозреваю, что перед
? должен быть обратный слеш.
Да нет не обязательно. Как правило все линки идут так /y/v?123abc
А блин Ты имеешь в виду за экранирующий слэш? те за обратный. Тогда да думаю должен быть)
Gemorroj написал:Код:
^/y/([a-zA-Z0-9\-_]+)\.html.*?$ /youtube/videoView.php?$1 last; |
вместо last, вероятно, должно быть break.
Сейчас попробуем)
Добавлено спустя 1 минуту 18 секунд: Gemorroj А как на счет этого?
TLENS написал:
Да и еще одно как строго указать 11 вхождений? Пробовал {11} типа rewrite ^/y/v?([a-zA-Z0-9\-_]{11})$ /y/$1.html permanent; не проходит на валидность
#7.
TLENS
Off
(14)
Moderator
2013.11.22 16:04
При экранировании знака вопроса вообще не срабатывает.
rewrite ^/y/v\?([a-zA-Z0-9\-_]+)$ /y/$1.html permanent;
В без экранирования бросает на /y/v.html?$1 такое ощущение что в реврайт попадает только патч а запрос после ? он не видит
#8.
TLENS
Off
(14)
Moderator
2013.11.22 17:05
хм странное явление. Сделал реврайт такого типа rewrite ^/y/v(.*?)$ /y/zzz.html?r=$request_uri&var=2 permanent; и при запросе /y/v?IKqV7DB8Iwg улетаю на /y/zzz.html?r=/y/v?IKqV7DB8Iwg&var=2&IKqV7DB8Iwg
Это дает понять что в конец все равно вставляется query_string
Добавлено спустя 2 минуты 36 секунд: А $1 у нас пустой rewrite ^/y/v(.*)$ /y/zzz.html?r=$1&var=2 permanent; кидает на /y/zzz.html?r=&var=2&9vQy0ip-SuIsds
#9.
TLENS
Off
(14)
Moderator
2013.11.22 17:05
Таки да реврайт не задевает query_string
rewrite ^(/y/v.*)$ /y/t.html?r=$1&var=2 permanent;
При запросе /y/v?IKqV7DB8Iwg34
Шлет нас на /y/t.html?r=/y/v&var=2&IKqV7DB8Iwg34
#10.
TLENS
Off
(14)
Moderator
2013.11.22 22:10
Обрыл уже гугл. Некоторые советуют знак вопроса вставлять в конец выходящей строки типо rewrite ^(/y/v.*)$ /y/t.html?r=$1&var=2? permanent; Это нужно для того что бы исключить автоподстановку того что после знака вопроса. Но вот мой вопрос с помощью этого решить не возможно.
Добавлено спустя 26 секунд: Здесь явно нужен другой подход