[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как преобразовать post.php?id=1 в post/1 ? [ЧПУ]
Страницы: 1, 2, 3, 4
Ramzes_Ra
За какой милой темой мы парни встретили начало осени и проводили лето)) с 1 сентября))
killer8080
Цитата (Ramzes_Ra @ 31.08.2013 - 23:10)
За какой милой темой мы парни встретили начало осени и проводили лето)) с 1 сентября))

у меня еще 45 минут лета biggrin.gif
Ramzes_Ra
Цитата (killer8080 @ 1.09.2013 - 00:15)
Цитата (Ramzes_Ra @ 31.08.2013 - 23:10)
За какой милой темой мы парни встретили начало осени и проводили лето)) с 1 сентября))

у меня еще 45 минут лета biggrin.gif

ахах)) мне бы ещё чуть чуть уловить запах лета... аааа..)) везунчик))
Советую насладиться этими 45 минутами и сделать всё, что не успел задуманное на лето))))
bybad
Ramzes_Ra, killer8080 - снимаю шляпу господа. MultiViews это как раз то, что надо!
bybad
Как оказалось таким способом я только нажил себе ещё больше проблем.
Теперь нужно разобраться как оптимизировать работу сайта, потому что при использовании адреса site.ru/post/stranica1 не отображаются изображения не работают скрипты и даже стили пришлось прикреплять явным образом (т.е. по прямой ссылке шттп://site.ru/style.css).

По все видимости теперь post распознаётся как папка и поэтому некорректно отображается. Вопрос, можно ли как то обойти эту проблему другим способом, или придётся везде указывать прямые адреса ?
killer8080
Цитата (bybad @ 1.09.2013 - 16:29)
По все видимости теперь post распознаётся как папка и поэтому некорректно отображается. Вопрос, можно ли как то обойти эту проблему другим способом, или придётся везде указывать прямые адреса ?

браузер же не знает ничего про чпу user posted image
Нужно всегда указывать пути от корня, не
<link href="css/style.css" rel="stylesheet" type="text/css" />

а
<link href="/css/style.css" rel="stylesheet" type="text/css" />


либо использовать тег base
bybad
Цитата (killer8080 @ 1.09.2013 - 13:53)
либо использовать тег base

Отлично - то что доктор прописал! И снова благодарю за помощь!
bybad
Хотелось бы ещё сделать так что бы страница post.php была доступна в строке браузера и со слешем и без него.

Есть адрес конкретной страницы site.ru/post.php?id=1 который с вашей помощью теперь доступен по короткому урлу site.ru/post/1

Нужно что бы показывалась главная страница site.ru/post.php (без $id) если вдруг пользователь вручную удалит из строки переменную id, т.е. останется site.ru/post/ или site.ru/post

Содержимое файла .htaccess


RewriteRule ^post/(.*)$ post.php?id=$1 [L]
RewriteRule ^post$ post.php [L]
RewriteRule ^post/$ post.php [L]


Если в браузере оставить site.ru/post всё срабатывает, но если добавить косую черту site.ru/post/ в конце - выскакивает ошибка 404. Может быть нужно какое-то другое условие?
bybad
Цитата (bybad @ 1.09.2013 - 15:58)
Может быть нужно какое-то другое условие?

Почитал, пишут что нужно ставить 301 редирект в таком случае. Кто-нибудь подскажет как его победить ?
killer8080
Цитата (bybad @ 1.09.2013 - 18:58)
Нужно что бы показывалась главная страница site.ru/post.php (без $id) если вдруг пользователь вручную удалит из строки переменную id, т.е. останется site.ru/post/ или site.ru/post

RewriteRule ^post(/(\d+))?/?$ post.php?id=$2 [L,QSA]
bybad
Цитата (killer8080 @ 1.09.2013 - 16:48)
RewriteRule ^post(/(\d+))?/?$ post.php?id= [L,QSA]

Увы, нет - почему то выдаёт ошибку при вводе site.ru/post и при использовании слеша на конце site.ru/post/
killer8080
какую ошибку?
Правило рабочее, если ты там ничего лишнего не на вертел. smile.gif
bybad
Цитата (killer8080 @ 2.09.2013 - 11:44)
какую ошибку?
Правило рабочее, если ты там ничего лишнего не на вертел. :)

Ошибка 404.

Это выражение нужно подставить вместо предыдущего или в дополнение к нему ?

Текущее содержимое файла

RewriteEngine on

Options -MultiViews

Options +FollowSymlinks
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^post/(.*)$ post.php?id=$1 [L]

ErrorDocument 404 http://site.ru/error404.php
ErrorDocument 403 http://site.ru/error403.php
killer8080
Цитата (bybad @ 2.09.2013 - 14:55)
Это выражение нужно подставить вместо предыдущего или в дополнение к нему ?

вместо
RewriteEngine on

Options -MultiViews +FollowSymlinks -Indexes

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^post(/(\d+))?/?$ post.php?id=$2 [L,QSA]

ErrorDocument 404 http://site.ru/error404.php
ErrorDocument 403 http://site.ru/error403.php
bybad
Все ровно выдаёт ошибку. И собственно говоря я не вижу тут редиректа.

По логике вещей, если в строке браузера введено site.ru/post/ должен происходить автоматический редирект на site.ru/post (без слеша в конце).

Наверное ваше выражение не срабатывает потому что в такам случае ничего не передаётся через строку браузера, а именно идентификатор $id статьи, что и вызывает ошибку 404 при проверке.

Понимаю что уже наверное надоел со своими вопросами, но попрежнему надеюсь на вашу помощь smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.