Перейти к содержимому

Фото
- - - - -

Изменение адресной строки в PHP


  • Вы не можете создать новую тему
  • Please log in to reply
18 ответов в этой теме

#1 CloneF

CloneF
  • Постоялец
  • 980 сообщений

Отправлено 06 Июль 2007 - 13:03

Есть ли способ сделать адресную строку более удобночитаемой, например, abc.ru/files вместо abc.ru/index.php?link=files
То есть мне нужно средство изменения не физического адреса документа, а его отображения в адресной строке, и как при этом поступать со ссылками?

Сообщение изменено: CloneF (06 Июль 2007 - 13:04 )

  • 0

#2 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 06 Июль 2007 - 13:08

Apache mod_rewrite

и слово для поиска ЧПУ
  • 0

#3 CloneF

CloneF
  • Постоялец
  • 980 сообщений

Отправлено 06 Июль 2007 - 13:28

Setor, спасибо за подсказку!
  • 0

#4 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 06 Июль 2007 - 13:35

вот пример использования
<ifModule mod_rewrite.c>
	RewriteEngine On

	RewriteCond %{REQUEST_URI} !^.*(\.css|\.js|\.gif|\.png|\.jpg|\.jpeg)$
	RewriteCond %{REQUEST_FILENAME} !-f
	#RewriteCond %{REQUEST_FILENAME} !-d
	RewriteRule ^([^?]+)?(.*)$ index.php/$1 [NC,QSA,L]
</ifModule>

Потом в скрипте уже парсишь $_SERVER['PATH_INFO']

$pathInfo = trim( $_SERVER['PATH_INFO'], '/' );
$pathInfo = explode( '/', $pathInfo );

И будет тебе массив со всеми "кусочками" URL'а, переданные скрипту параметры ?foo=1&bar=2 автоматом будут в $_GET
  • 0

#5 CloneF

CloneF
  • Постоялец
  • 980 сообщений

Отправлено 06 Июль 2007 - 17:20

Да будет мне счастье! Ничего не понял! Завтра буду разбираться, спасибо за помощь!!! Setor !!
  • 0

#6 Акей

Акей

    Смотрит свысока

  • Постоялец
  • 2 134 сообщений

Отправлено 06 Июль 2007 - 20:38

мне все-таки больше нравится вариант, изложенный тут: http://www.phpclub.r...icle/2001-01-16

Не зависит от сервера, будь то Апач или ИИС
  • 0

#7 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 06 Июль 2007 - 23:17

Акей, каждый вариант имеет право на существование, но ошибки пусть остаются ошибками, они не предназначены для навигации - это просто крайние меры. Они только флудят в логи. По этому я считаю, этот вариант следует избегать как огонь воды ;)

Да и вряд ли твой проект будет крутиться под IIS
  • 0

#8 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 07 Июль 2007 - 16:20

Я тут как накаркал, попалась мне следующая ситуэйшен: Windows машина. Apache 2.2 + PHP 5.2.3 (fastcgi) и предложенный мною вариант не работает из-за того, что после index.php стоит знак /

И всё, кирдык :)
  • 0

#9 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 07 Июль 2007 - 16:39

Выдаёт: No input file specified.
  • 0

#10 CloneF

CloneF
  • Постоялец
  • 980 сообщений

Отправлено 03 Март 2009 - 14:06

Help.

На сервере в основной папке сайт с RewriteEngine On.
На сервере есть другая папка с другим движком от wordpress.

Так вот, из-за RewriteEngine On второй сайт не пашет, а хочешь зайти на него, приходится делать RewriteEngine Off. Оба сайта одновременно не могут использовать ЧПУ. Возможно сделать хотябы в теории, чтоб оба работали?
  • 0

#11 Demetrio

Demetrio

    uid=0(root)

  • Админ
  • 18 649 сообщений
  • Откуда:Tallinn

Отправлено 03 Март 2009 - 14:11

Можно ведь через .htaccess его использовать.
  • 0

#12 CloneF

CloneF
  • Постоялец
  • 980 сообщений

Отправлено 03 Март 2009 - 15:14

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

И

# BEGIN WordPress2
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>

# END WordPress2

Вот их соединить в один в .htaccess файле
  • 0

#13 Demetrio

Demetrio

    uid=0(root)

  • Админ
  • 18 649 сообщений
  • Откуда:Tallinn

Отправлено 03 Март 2009 - 15:25

CloneF, так на втором он тебе не нужен?
  • 0

#14 CloneF

CloneF
  • Постоялец
  • 980 сообщений

Отправлено 03 Март 2009 - 16:58

CloneF, так на втором он тебе не нужен?

Везде нужен ЧПУ.

Для Root движка, чтобы индексировался в поисковиках, и для второго, потому, что я забыл как вырубить ЧПУ в движке сайта, и сейчас не могу на него зайти, тк первый root движек ставит свои ЧПУ и не дает доступа ко второму сайту.
  • 0

#15 - SNEG -

- SNEG -
  • Постоялец
  • 1 290 сообщений
  • Откуда:Мир

Отправлено 19 Март 2009 - 02:13

Тут есть методы
http://spectator.ru/...r_friendly_urls
  • 0
Нам можно

#16 ibsn

ibsn
  • Пользователь
  • 7 сообщений

Отправлено 08 Апрель 2009 - 00:25

один .htaccess в корень , второй в ./wordpress/
и будет тебе счастье.
.htaccess распространяется на директории и поддиректории, если нет перезаписывающих инструкций.
  • 0
QuadCore Intel Core 2 Quad Q9550, 2666 MHz (8 x 333)
Intel Beachwood X48
4 Гб DDR2-800 DDR2 SDRAM
NVIDIA GeForce GTX 280 (1024 Мб)
Asus MK221 [22" LCD]
SAMSUNG HD753LJ (750 Гб, 7200 RPM, SATA-II)

#17 zedirtybastard

zedirtybastard
  • Пользователь
  • 499 сообщений

Отправлено 15 Апрель 2009 - 12:56

мне все-таки больше нравится вариант, изложенный тут: http://www.phpclub.r...icle/2001-01-16

Не зависит от сервера, будь то Апач или ИИС

Я бы за такую реализацию морду бил
Во-перых, ты сразу теряешь 404 страницу, во-вторых засрешь error_log если не отключишь, в-третьих, это грязный хак и решение использующее неестественную логику.
В принципе, наиболее логичным является использование средств предназначенных для этого, тот же mod_rewrite. Сетор видимо просто не до конца понял в чем разница при отсутсвии и наличии слеша в коночании, поэтому такая ситуация возникла. В целом-же, разбираясь в mod_rewrite конфигах можно сделать очень качественное и стабильное решение.

Использовать .htaccess тоже не советую, по крайней мере при серьезной разработке. Во-первых, на многих шаред хостингах их просто режут, во-вторых, логически правильнее держать конфиг сервера в одном месте, иначе потом с этими .htaccess можно некисло запутаться.
  • 0

#18 Equals

Equals
  • Пользователь
  • 73 сообщений

Отправлено 16 Апрель 2009 - 09:52

Использовать .htaccess тоже не советую, по крайней мере при серьезной разработке. Во-первых, на многих шаред хостингах их просто режут, во-вторых, логически правильнее держать конфиг сервера в одном месте, иначе потом с этими .htaccess можно некисло запутаться.


Бывали случаи :)
  • 0

#19 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 17 Апрель 2009 - 21:02

Использовать .htaccess тоже не советую, по крайней мере при серьезной разработке. Во-первых, на многих шаред хостингах их просто режут, во-вторых, логически правильнее держать конфиг сервера в одном месте, иначе потом с этими .htaccess можно некисло запутаться.

Практика показала, что от этих .htaccess одни проблемы с переносимостью проектов. Но имхо, больше виноваты не .htaccess, а разработчики, которые пихают туда всё что найдут в гугле.

на многих шаред хостингах их просто режут

яркий тому пример - хостинг zone.ee
  • 0