Помогите пожалуйста с htaccess

SS
На сайте с 28.05.2008
Offline
136
678

Здравствуйте. У меня такой вопрос.

Подскажите пожалуйста как сделать следующее.

Написал скрипт по замене ссылок... Тоесть человек вводит свою ссылку, имя виртуальной папки, имя файла. После чего ему выдается ссылка http://мой сайт/имя папки/имя файла (имя папки и имя файла необязательные для ввода, если их нет то адрес будет http://мой сайт/id)

Как сделать редирект если человек заходит по выданной ему ссылке на файл допустим mylink.php и что б я мог прочитать в нем параметры чтобы переправить человека на ту ссылку которую мы прятали.

Тоесть всегда редирект если не:

admin.php

change_link.php

del_link.php

index.php

link.php

Спасибо заранее... Просто раньше не приходилось работать с аштиаксесом... А тут вдруг срочно надо и не успеваю почитать литературу на эту тему!

kil
На сайте с 03.04.2006
Offline
84
kil
#1

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

RewriteEngine  on

RewriteRule ^([0-9a-z]+)\/([0-9a-z]+)\.([0-9a-z]+)$ mylink.php?foldername=$1&filename=$2.$3 [L]

В таком случае в скрипт mylink.php будут передаваться нужные тебе параметры:

$_GET['foldername'] и $_GET['filename']

Вопросы безопасности советую рассмотреть дополнительно :)

SS
На сайте с 28.05.2008
Offline
136
#2

Сделал так как вы написали. Параметры не передаются :( точнее не верно передаются

прохожу например по сылке http://сайт/sitefolder/sitefile

выводит:

folder=r

file=

kil
На сайте с 03.04.2006
Offline
84
kil
#3

Сори... код переправил. Попробуй еще раз.

SS
На сайте с 28.05.2008
Offline
136
#4

Теперь пишет страница Not Found

SmartSEO добавил 16.09.2008 в 04:03

RewriteEngine on

RewriteRule ^([0-9a-z]+)+/([0-9a-z]+).([0-9a-z]+)$ mylink.php?foldername=$1&flilename=$2.$3 [L]

Вот до чего доводит програмерская интуиция... folder вот так выводит, осталось файл вывести :)

kil
На сайте с 03.04.2006
Offline
84
kil
#5

Какое вводится имя файла? И какая папка?

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

Для любых символов:


RewriteEngine on
RewriteRule ^(.+)\/([^\/]+)$ mylink.php?foldername=$1&filename=$2 [L]
SS
На сайте с 28.05.2008
Offline
136
#6

Последний вариант выводит следующее

folder=sitefolder (верно выводит)

file=sitefi.e (должно быть sitefile)

kil
На сайте с 03.04.2006
Offline
84
kil
#7
SmartSEO:
Последний вариант выводит следующее
folder=sitefolder (верно выводит)
file=sitefi.e (должно быть sitefile)

Если честно, то очень не хочется проверять. Должно работать.

Код в последнем посте переправил. Попробуй еще раз )

SS
На сайте с 28.05.2008
Offline
136
#8

Спасибо огромное! Сильно сильно благодарен!!!

Сейчас работает! Буду теперь думать как еще сделать так что б работало когда папка не указана а просто файл один....

Спасибо еще раз!

kil
На сайте с 03.04.2006
Offline
84
kil
#9

Пжлста!

Учи регулярки :)

SS
На сайте с 28.05.2008
Offline
136
#10

Вот еще спрошу...

Надо сделать так что во всех случаях кроме этих файлов если встречается файл.расширение срабатывал RewriteRule

RewriteRule ^(admin.php|index.php|change_link.php|config.php|del_link.php|link.php|mylink.php)$ mylink.php?filename=$1 [L]

SmartSEO добавил 16.09.2008 в 08:26

Помогите плиз.... очень надо! Всю ноч три правила составлял...

Вот что получилось:

RewriteRule ^([0-9]*/)$ mylink.php?id=$1 [L]

RewriteRule ^(.+)\/([^\/]+)$ mylink.php?foldername=$1&filename=$2 [L]

RewriteRule ^(.+)\/([0-9]+/)$ mylink.php?foldername=$1&id=$2 [L]

Осталось последнее.... Но его никак не осилю!

SmartSEO добавил 16.09.2008 в 17:45

Спасибо, все получилось.... за 12 часов 12 срочек htaccess.... Сильно )))))

Почти научился :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий