PHP и с чем его едят....

[fly]

Sweet orange
Все равно никаких изменений. Может надо еще что-то включать? Уже и апач перегружал и ничего.
 

Dre.hz

Active Member
Все равно никаких изменений. Может надо еще что-то включать? Уже и апач перегружал и ничего.
Ну тогда шаг за шагом.
Сначала протестируй, работает ли mod_rewrite вообще.
Затем постепенно строй то что требуется, постепенно усложняя, пока не достигнешь того, что требуется...
 

[fly]

Sweet orange
Вот не могу понять.
RewriteRule page1.html page2.html
Вот так подменяет page1 на page2, почему тогда здесь:
RewriteRule ^press/([0-9]+)/? press.php?idPaper=$1 [L]
Подменяемые данные мы пишем в первой части, а не во второй. Как по аналогии с первым примером, было бы правильнее написать что-то вроде:
RewriteRule ^/press.php?idPaper=$1/? press/([0-9]+) [L]
Каков его принцип работы?
 

[fly]

Sweet orange
В общем работает. Но только теперь возникло еще больше вопросов... Сама по себе ссылка работает, но только когда ввожу ее принудительно в строку. А как же сделать чтобы ссылку автоматически подменяло этим адресом - ? Или это мне надо все ссылки переписывать с press.php на press/ ?
 
Останнє редагування:

Dre.hz

Active Member
Нужно
1. Либо переписать все ссылки в коде (руками и автоматически)
2. Либо редиректить с некрасивой на красивую (через PHP или тот же mod_rewrite), что в общем следует делать.

Первое решение правильное. Советую почитать мануал по mod_rewrite:

Еще более правильным было бы переписывать в .htaccess вообще все урлы на /index.php и дальше уже в PHP-скрипте заниматься роутингом (разбором урла и выполнением нужного кода в зависимости от результата).
 

[fly]

Sweet orange
Вопрос по ЧПУ:
Есть ссылки: и

А надо сделать так: и соответственно.

На сколько я понял, можно сделать следующим образом:
При добавлении товара в базу вместе с названием товара отдельной ячейкой дописывать еще и адрес ЧПУ (т.е. sumsung-e900). На сайте в каталоге товара у всех товаров будут ссылки вида: , , и так далее. Поскольку таких страниц в реале не существует, переход по таким адресам выдаст ошибку 404. То есть в .htaccess надо прописать условие, при котором в случае этой ошибки, на страницу 404.php, в которой будет происходить разбор УРЛа.

P.S. Понимаю, что mod_rewrite по идее лучше подходит для этой операции, но с ним пока не разобрался.

Теперь сам вопрос: на сколько это ущербно для поисковиков? Ведь по логике машины, все эти ссылки не рабочие!
 
Останнє редагування:

[fly]

Sweet orange
Пока получилось реализовать адрес вида: .
Нужно в адресе убрать product/1/. Это через .htaccess прописывать как-то?
 

Dre.hz

Active Member
Fly,
404 хоть и будет работать - не хорошо. Посмотри, какие заголовки шлются. Если 404, то плохо.

Вот тебе код .htaccess, который будет работать
Код:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php [L]
Он заставляет на все урлы отвечать index.php. Дальше в скрипте бери $_SERVER['REQUEST_URI'] и разбирай его.
 
Зверху