| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: для новичков > Подстановка актуального домена в ссылку |
| Автор: viperson 5.1.2009, 22:25 |
| Здравствуйте спецы. Помогите решить задачку. Учусь на курсах и в контрольной работе задали такой вопрос: Есть ссылка типа http://site.com/news.php?add=news335. Эта ссылка находится на 10 000 страниц сайта(ссылка на новость типа), Но домен раз в день меняется и ссылка соответственно становится не рабочей, а руками править на 10 к страниц не реально. Каждый день уже не site.com а site2.com, site3.com и тд. Как организовать в html странице скрипт, который реализует подстановку правильного домена из файла domains.txt в момент нажатия на ссылку, то есть линк типа этого http://<?=$mylink?>/news.php?add=news335), где <?=$mylink?> тот домен который берется из файла domains.txt. Файл должен лежать в корне домена на страницах которого размещен линк. Я в кодинге пока не шарю особо, особенно в js? поэтому попрошу с примерчиками чтобы сразу попробовать. Очень нужна Ваша помосчь. |
| Автор: webevt 5.1.2009, 22:48 |
| viperson, реализация именно с помощью js? Во-первых, если ссылка на свой же сайт(на котором и скрипт), то можно использовать location.domain. Иначе, с помощью аякса отправлять запрос на этот txt файл, содержащий новое имя домена. |
| Автор: ksnk 5.1.2009, 23:08 | ||
А чего - в контрольной работе пофиг на каком языке делать? |
| Автор: viperson 5.1.2009, 23:17 |
| да в принципе всеравно на чем писать. Так как ссылка находится на html странице я предположил что может быть реализовано только на js, хотя можно на странице указать ссылку другого вида если в php делать и связать эту ссылку с пхп скриптом на этом же домене. Я создал параллельно топик в пхп разделе. Я не очень шарю в программировании, поэтому нужна любая реализация, если на js возможно то на нем, а если нет пригодятся любые реализации. Добавлено @ 23:21 webevt ссылка не на тот же домен. Ссылка находится на страницах моего сайта а ссылается на другой домен. ksnk Вид переменной в домене просто случайный, не важно как будет выглядеть, хоть $domain? важна реализация задачи для html кода, то есть страница на которой линк на другой домен является html |
| Автор: ksnk 5.1.2009, 23:32 |
| А как в точности формулируется задача? Просто, imho, задача должна быть хоть сколько нибудь приближена к реальности, а в реальности 10к страниц новостного сайта не меняются так каждый день. Более того, индекс ссылки новости не меняется никогда. И адрес ссылки всегда один и тот-же именно для того, чтобы ссылка всегда оставалась актуальной, чтобы Вася Пупкин, поместив новость в букмарки в детстве по пьяне, мог в старости, на трезвую голову ее еще раз прочитать... Можно порешать более разумно, imho, выглядящую задачу - "давайте попроектируем охрененно большой новостной портал с офигенным потоком новостей..." |
| Автор: viperson 5.1.2009, 23:42 |
| ksnk Все абстрактно в задаче. Не важно что это за сайт, на который ссылка. Просто преподавателям захотелось именно так. Пусть это будет любой другой сайт, а ссылка может выглядеть как угодно. то есть допустим http://blabla.com/viagra.html |
| Автор: ksnk 6.1.2009, 00:05 |
| Угу, а откуда тогда берутся "правила переименования ссылок"? Вот была ссылка "site1.com/?news=1234", на следующий день она должна стать "site3.ru/?add=2345". через два дня "site5.org/?add=news3456"? Где и как предполагается хранить эти 10000 * `количество новостей на странице` ссылок? |
| Автор: viperson 6.1.2009, 00:14 |
| ksnk site1.com/?news=1234", на следующий день она будет "site2.ru/?news=1234". через два дня "site5.org/?news=1234" МЕНЯЕТСЯ ТОЛЬКО ДОМЕН! Если не знаешь как реализовать не пиши бред. 10000 страниц на моем сайте и на каждой из них свои ссылки, Просто надо менять домен а не всю ссылку. то есть изначально я должен иметь ввиду что домен может измениться и сразу в страницу добаить некий скрипт, который будет подтягивать имя домена, чтобы избежать таких ситуаций в будущем, то есть при создании других сайтов под размещение новостей |
| Автор: ksnk 6.1.2009, 00:38 |
| viperson, Угу. Уже немного понятнее Итого - есть просто файл с одним единственным именем домена, на который нужно заменить один-единственный домен в ссылках при показе всех этих 10000 страниц? |
| Автор: viperson 6.1.2009, 00:50 |
| да ksnk именно так. Я уже понял как реализовать, но нужна помосчь спецов пхп. Вот есть ссылка http://site.com/news.php?add=news1 В моей html странице mnogonews.html я указываю ее как news.php?add=news1, где news.php - мой пхп скрипт который лежит в корне моего домена, в котором задано правило, что нужно сделать редирект по ссылке news.php?add=news1, только вначале подставить домен вида http://site.com/ перед news.php?add=news1 взяв домен из файла domain.txt. Актуальный домен я сам руками каждый день прописываю в последнем. Пусть даже актуальный домен лежит в самом скрипте news.php - не важно где прописана инфа об актуальном домене, то есть как реализуешь так реализуешь. |
| Автор: ksnk 6.1.2009, 01:01 | ||||
файл replaceit.php
Ну раз уж нужно на javaScript'е порешать... |
| Автор: viperson 6.1.2009, 01:39 |
| Данная реализация не работает,я проверял. |
| Автор: Hades 6.1.2009, 15:50 | ||||
файл ChangeDomains.js
добавляем в другие(10 000) страницы
|
| Автор: viperson 6.1.2009, 16:03 | ||||||
Мне не совсем понятна данная реализация. Есть 2 домена bla и blabla. В данный момент на всех страницах стоит bla. а ссылка - это не только имя домена , выглядит так: http://bla.com/news.php?add=news1. То есть скрипт должен автоматом сменить http://bla.com/news.php?add=news1 на http://blabla.com/news.php?add=news1 при нажатии на нее. Кроме того на страницах есть ссылки на другие ресурсы и соответственно скрипт не должен применять ни каких правил к другим ссылкам. |
| Автор: Hades 6.1.2009, 16:11 | ||
что вы тут напишите, на то он и сменит
работает? |
| Автор: viperson 6.1.2009, 16:15 | ||||
нет смысла даже проверять. так как + ко всему на этих же страницах есть другие ссылки вида http://bla.com/news.php?add=news2, http://bla.com/news.php?add=news3 и тд. Я так понимаю что надо основываться на условии: если домен = bla.com заменить на blabla com, то есть нужно менять не ссылку целиком, а только имя домена в ссылке. |
| Автор: viperson 6.1.2009, 16:27 | ||||||||
Я понял он будет работать если на странице только одна ссылка, но, как я уже сказал выше, на странице есть еще другие ссылки вида http://bla.com/news.php?add=news2, http://bla.com/news.php?add=news3, 4, 5, 6 и тд и таких разных ссылок допустим тоже 10 000. Получается, что надо в js перечислить все 10000 ссылок. |
| Автор: viperson 6.1.2009, 18:02 |
| Предлагаю рассмотреть другой вариант, когда в теле станицы ссылка выглядит <_a href="news.php?add=news1>news1</a> и <_a href="page.php?add=page1>page1</a> без имени домена и http, если такое возможно. Задача все таже - подставить актуальное имя домена вида _http://blabla.com/, но смена домена должна осуществлятся только в том случае если ссылка начинается с news.php и page.php, так на данной странице есть другие ссылки типа <_a href="oldnews.html">old news</a> которые указывают на домен данной страницы. Как вариант, подойдет условие, что если страница в ссылке начинается с .php, а не .html. Опять же нужна связь с .php или .txt, куда будет прописываться актуальный домен. |
| Автор: Hades 6.1.2009, 21:54 | ||||
файл ChangeDomains.js
дальше вставляйте свои 10 000 ссылок, только смотрите чтобы браузер не треснул |
| Автор: viperson 6.1.2009, 22:27 | ||||||
А ты проверял? У меня не пашет, вот посмотри сам http://usethis.info/2/1.html и кодстраницы посмотри, может я чот не так сделал. Даже проверил у 2-х разных хостинг провах |
| Автор: Hades 6.1.2009, 22:31 | ||
а на сервере есть такой файл? должен быть в той же папке где и html-страница. если не будет работать попробуйте так
|
| Автор: viperson 7.1.2009, 00:17 | ||||
Ну конечно есть. Можешь проверить подставив в адрес вместо 1.html ChangeDomains.js, который браузер предложит сразу скачать. Второй вариант проверил, тоже глухо. |
| Автор: Hades 7.1.2009, 00:44 | ||||
| viperson, извиняюсь, в место
поставьте
странно у меня работает. |
| Автор: viperson 7.1.2009, 01:01 | ||||||
Не работает на двух разных хостингах. Можешь ссылку дать страницы на твоем хостинге? |
| Автор: Hades 7.1.2009, 01:05 |
можно посмотреть? |
| Автор: viperson 7.1.2009, 01:19 |
| 1. <script type="text/javascript"> function f(link) { var newDomain = "superpuper"; link.href = "http://www." + newDomain + link.href.substr(link.href.indexOf(".com")); } </script> 2. <script type="text/javascript" src="ChangeDomains.js"></script> Оба варианта работают |
| Автор: Hades 7.1.2009, 01:25 | ||
работает
проверьте там должно быть именно ChangeDomains.js |
| Автор: viperson 7.1.2009, 01:35 |
| Да уже все работает, во втором варианте где то ошибся. Создал файл заново и все заработало. Я очень Вам благодарен за решение не легкой(для меня) задачи |