Просмотр полной версии : Модреврайт. Вопрос
Как сделать чтобы ссылка вида http://site.com/file.php отображалась как http://site.com/file/
Пробовал так:
^auth/$ auth.php [QSA]
Не выходит.. Почему? (ЕРР 404)
^auth$ auth.php [QSA]
А так http://site.com/file
грузит нормально.
Так как добавить правильно слеш в конец?
.htaccess
RewriteEngine on
RewriteRule ^([a-Z0-9]+)/$ $1.php
RewriteRule ^(auth_form)/$ $auth_form.php
Без слеша работает а с лешем ошибка 404
Не могу понять что за х...я
Че ты делаешь?
Мое правило пиши
А какая разница между тем что я написал и Вы?
RewriteRule ^([a-Z0-9]+)/$ $1.php
RewriteRule ^(auth_form)/$ $auth_form.php
Считайте по буквам
1. Ваш код не работает. Пишет Internal Server Error (Это уже лучше))
Хочу разобраться в рег. выражении:
^([a-Z0-9] - обозначает клас допустимых символов.
+ -???
Почему неправильный мой вариант?
^([a-Z0-9] на ^([a-z0-9] - Internal Server Error уже нет
Но все же: со слэшом страницу не грузит а без - страница грузится
Я не даю не рабочий код, я сам проверил
Ну а можете его хоть чуть-чуть обьяснить?
И почему например выдает ошибку на
RewriteRule ^([a-z_]{9})/$ $auth_form.php
Потому что у тебя запись неверная
http://www.opennet.ru/docs/RUS/mod_rewrite/
RewriteRule ^([a-zA-Z0-9]+)/*$ $1.php
Вот вполне рабочий вариант, работает как со слешем, так и без оного. Тока что проверено на апаче. В имени файла могут содержаться символы a-z, A-Z, 0-9, что указано в квадратных скобках. имя файла состоит из одного или более символов, на что указывает модификатор "+". Выражение берется в круглые скобки, чтобы далее использовать найденное как $1. То, что у вас написано - $auth_form - чушь какая-то. Шаблону $1 соответствует [a-zA-Z0-9]+. В конце в моем примере стоит /*, что означает ноль или более символов слеша.
RewriteRule ^([a-z]+)/*$ $1.php
http://www.site.com/test/
на сервере работает нормально а на локоальном хосте со слешем в конце не хочет. Пишет файл не найден
Почему?
blackybr
12.02.2008, 23:52
все отлично работает, не знаю что у вас за хост)
RewriteRule ^([a-z]+)/?$ $1.php [L]
Apache HTTP Server 1.3.33
RewriteRule ^([a-z]+)/?$ $1.php [L]
Блин и по-Вашему пробовал. Со слешем пишет 404 ошибку. А без - нормально.
blackybr
13.02.2008, 01:42
подкючен ли сам модуль рерайта к апачу? ну не знаю пропиши еще
RewriteEngine On
Options +FollowSymLinks
читай статью мою в конце концов)
http://forum.antichat.ru/thread27498.html
Так в интернете у меня работает! А в локале нет.
Повторяю - не работает именно только когда добавляешь слеш в конец, тоесть когда
http://www.site.com/test/
Без слеша все работает нормально
А вот мой аксес:
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^([a-z]+)/*$ $1.php
Может сдесь нужно включать какие-то допольнительные опции модреврайта?
Удали свой .htaccess и создай новый с содержанием:
RewriteEngine On
Options +FollowSymLinks
RewriteRule ^([a-z]+)/?$ $1.php [L]
Сделал
та же ситуация(((((
Пробовал даже менять виртуальный хост.
Может это из кеша выдает? Хотя в файле, который я запрашиваю я менял информаицию, и мне выдавало страницу с новой инфой..
Мейби в апаче акцес файл прописан какой-нить .htaccessfilenotuseforhackers, а не .htaccess
Или у тебя мод_реврайт вообще не подключен
Посмотри в phpinfo() видно ли его
Его видно, так как ссылки вида site.com/test.php?id=ok я переделывал на site.com/ok.html
А в конфиге апача прописал:
LoadModule rewrite_module modules/mod_rewrite.so
AddModule mod_rewrite.c
Хотя в пхпинфо найти ничего о модреврайте не могу. Там такой строки нет
Вобщем всем большое спасибо. Вроде решилась проблема. Снес нафиг апач, поставил более раннюю версию и все работает.
Спасибо
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot