|
|
|
| есть файл .htaccess
в нём я написал такое:
RewriteEngine on
Options +FollowSymlinks
RewriteBase /index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^album([0-9]+)_([0-9]+)$ /albdir/index.php?id=$1&alb=$2 [L,QSA]
RewriteRule ^photo([0-9]+)_([0-9]+)$ /albdir/photo.php?id=$1&fotid=$2 [L,QSA]
RewriteRule ^([^/]*)\.htmx$ /somedir/index.php?id=$1 [L,QSA]
RewriteRule ^([^/^\.^_]*)$ /index.php?id=$1 [L,QSA]
всё работает чётко, но регистрируется пользователь с ником some_girl и сайт начинает выдавать, что человек не найден. тогда я затираю в последней строке ^_
RewriteRule ^([^/^\.]*)$ /index.php?id=$1 [L,QSA]
но теперь при переходе в альбом на страницу /album77_99 - выдаёт страницу, что такой пользователь не найден %)
вопрос:
как в никнеймах запретить чтобы были строки вида album([0-9]+)_([0-9]+) или photo([0-9]+)_([0-9]+) ? | |
|
|
|
|
|
|
|
для: naxa
(12.01.2011 в 18:38)
| | Хм... ну при регистрации просто проверяйте соответствует ли имя регулярным выражениям ^album([0-9]+)_([0-9]+)$ и ^photo([0-9]+)_([0-9]+)$ и если соответствует - говорите, что дескать такой пользователь уже существует, пожалуйста выберите другое имя. А в чем сложность? | |
|
|
|
|
|
|
|
для: cheops
(12.01.2011 в 18:41)
| | нет нет, я не про то ...
я про то что сейчас все урлы определяются как пользователь и открывает index.php
нужно чтобы урлы, которые вида ^album([0-9]+)_([0-9]+)$ и ^photo([0-9]+)_([0-9]+)$ - открывали одно, если не соответствует, то index.php ...
сейчас почему-то это не работает. я думал что оно что выше, то "главнее", но на сервере не работает (хотя на локалке по таким урлам открывается то что надо)
========
пробовал писать что-то вроде
RewriteRule ^(?!album)([^/^\.^_]*)$ /index.php?id=$1 [L,QSA]
не функциклирует вроде :) | |
|
|
|
|
|
|
|
для: naxa
(12.01.2011 в 18:44)
| | Тогда вот эту строку нужно будет как-то переделать
RewriteRule ^([^/^\.^_]*)$ /index.php?id=$1 [L,QSA]
|
Тем более в классе [] используется лишь одно отрицание ^, все что после него следует - отрицается, три ^ - это неправильно. | |
|
|
|
|
|
|
|
для: naxa
(12.01.2011 в 18:38)
| | Вообще, чтобы отладить mod_rewrite и точно знать, что сработало, лучше включить лог запросов в виртуальном хосте (если конечно, дело на локальной машине происходит и у вас имеется доступ к httpd.conf)
<VirtualHost 127.0.0.1:80>
...
RewriteLog logs/rewrite.log
RewriteLogLevel 9
</VirtualHost>
|
| |
|
|
|
|
|
|
|
для: cheops
(12.01.2011 в 18:50)
| | действия происходят на локалке и на ВДСе.
на локалке работает как надо, на ВДСе не совсем
сейчас гляну логи (не знал что такое есть :)) | |
|
|
|
|
 9 Кб |
|
|
для: naxa
(12.01.2011 в 18:38)
| | RewriteEngine on
Options +FollowSymlinks
RewriteBase /index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^album([0-9]+)_([0-9]+)$ /albdir/index.php?id=$1&alb=$2 [L,QSA]
RewriteRule ^photo([0-9]+)_([0-9]+)$ /albdir/photo.php?id=$1&fotid=$2 [L,QSA]
RewriteRule ^([^/]*)\.htmx$ /somedir/index.php?id=$1 [L,QSA]
RewriteRule ^([^/^\.]*)$ /index.php?id=$1 [L,QSA]
================
Прикрепил лог.
с первого взгляда криминала не вижу :)
IP2 - - [12/Jan/2011:11:26:52 --0500] [domain/sid#801778b00][rid#805afe0a0/initial] (3) [perdir /home/user/data/www/domain/] strip per-dir prefix: /home/user/data/www/domain/album222_7 -> album222_7
IP2 - - [12/Jan/2011:11:26:52 --0500] [domain/sid#801778b00][rid#805afe0a0/initial] (3) [perdir /home/user/data/www/domain/] applying pattern '^album([0-9]+)_([0-9]+)$' to uri 'album222_7'
IP2 - - [12/Jan/2011:11:26:52 --0500] [domain/sid#801778b00][rid#805afe0a0/initial] (4) [perdir /home/user/data/www/domain/] RewriteCond: input='/home/user/data/www/domain/album222_7' pattern='!-f' => matched
что значат цифры в скобках ? ((2), (3), (4)) | |
|
|
|
|
|
|
|
для: naxa
(12.01.2011 в 18:38)
| | ребяяята, простите, на самом деле это я тупой %)
я в папке albdir по ошибке index.php c выводом фотографий заменил на index.php из корня, от того и весь головняк начался.
P.s. зато я узнал, что RewriteCond %{REQUEST_FILENAME} !-f - проверка существование запрошенного файла (сам писал - сам забыл :)).
флаг L - это значит если правило совпадает - дальше не прверяем.
узнал как смотреть логи мод рерайта.
Всем спасибо за внимание, проблема решена :) | |
|
|
|