|
|
|
| Задумался над организацией ЧПУ на одном из своих сайтов и обнаружил очередной пробел.
1. Options +FollowSymlinks – прочитал об этом в интернете, но мой перегруженный мозг не воспринял научные объяснения. Расскажи простыми словами, что делает эта строка?
2.
RewriteEngine on
RewriteBase /
# Одинарный путь: http://сайт.ru/index.php?menu=new на понятный URL сайт.ru/new.html
RewriteRule ^([^/]*)\.html$ /index.php?menu=$1 [L]
# Двойной путь: http://сайт.ru/index.php?menu=article_view&article_id=5
Получилось
RewriteRule ^([^/]+)/([^/]+)\.html$ /index.php?menu=$1&article_id=$2 [L]
Теперь вопросы:
а)Здесь не очень понял [L] – это значит, что если соответствие найдено, то дальше не ищем?
б) А если не menu? Можно написать общее правило для одной передаваемой переменной?
Например: action=1, test=ok, menu=new и т.п.
в) А www учитывается или нужно под него свое правило писать?
г) Какая конструция лучше со знаком «*» или со знаком «+» | |
|
|
|
|
|
|
|
для: Indemion
(27.02.2008 в 16:08)
| | С этими вопросами вам лучше в форум регулярок, так ваши вопросы именно в этом
[L] (Last) - последний | |
|
|
|
|
|
|
|
для: Indemion
(27.02.2008 в 16:08)
| | Да, и вот еще что. Хочу получить: http://сайт.ru/article_view-5.html
Однако когда убираю / и ставлю дефис, то правило перестает работать.
RewriteRule ^([^/]+)-([^/]+)\.html$ /index.php?menu=$1&article_id=$2 [L]
Как с этим бороться? | |
|
|
|
|
|
|
|
для: Indemion
(27.02.2008 в 17:50)
| | С этими вопросами вам лучше в форум регулярок
RewriteRule ^([^/]+)\-([^/]+)\.html$ /index.php?menu=$1&article_id=$2 [L]
|
| |
|
|
|
|
|
|
|
для: Indemion
(27.02.2008 в 16:08)
| |
* - Предыдущий символ встречается 0 или больше раз.
+ - Предыдущий символ встречается 1 или больше раз.
? - Предыдущий символ встречается 0 или 1 раз.
|
| |
|
|
|
|
|
|
|
для: mihdan
(27.02.2008 в 18:16)
| | Это я знаю. Мне не ясно почему такая конструкция не работает:
RewriteRule ^([^/]+)-([^/]+)\.html$ /index.php?menu=$1&article_id=$2 [L]
Уж очень не хочется с виртуальными директориями заморачиваться. | |
|
|
|
|
|
|
|
для: Indemion
(27.02.2008 в 18:38)
| | Я примерно понял в чем проблема:
Options +FollowSymlinks
RewriteEngine on
RewriteBase /
RewriteRule ^([^/]+)\.html$ /index.php?menu=$1
RewriteRule ^([^-]+)-([^-]+)\.html$ /index.php?menu=$1&article_id=$2 [L]
Два последних правила почему-то исключают друг друга. Хорошо бы разобраться )) | |
|
|
|
|
|
|
|
для: Indemion
(27.02.2008 в 21:48)
| |
Options +FollowSymlinks
RewriteEngine on
RewriteBase /
RewriteRule ^([^/]+)\.html$ /index.php?menu=$1 [L]
RewriteRule ^([^-]+)-([^-]+)\.html$ /index.php?menu=$1&article_id=$2 [L]
|
| |
|
|
|
|
|
|
|
для: mihdan
(27.02.2008 в 23:53)
| | Этот вариант не будет работать. Пробовал еще вчера и с [L] и без.
Пока, как вариант, сделал разбивку по суффиксам: \.html (для одной переменной) и \.htm (для двух). Работает, но притянуто за уши... | |
|
|
|
|
|
|
|
для: Indemion
(28.02.2008 в 10:40)
| |
Options +FollowSymlinks
RewriteEngine on
RewriteBase /
RewriteRule ^([^-]+)-([^-]+)\.html$ /index.php?menu=$1&article_id=$2 [L]
RewriteRule ^([^/]+)\.html$ /index.php?menu=$1 [L]
|
| |
|
|
|