2013-02-22 5 views
0

Я пытался использовать SEO Friendly URL для моего сайта, моя цель была переписать product/131/ABCDEFGH на productpage.php?id=131Htaccess вопрос переписывают

я этого достиг теперь переписать путь и открыть нужную страницу

.htaccess код

RewriteEngine on 
RewriteBase/
RewriteRule ^product/(([^/]*))/([^/]*)$ /cprrpc/productpage.php?id=$1 [L] 

Теперь у меня есть еще одна проблема, связанная с внутренними ссылками, в настоящее время все изображения и т. Д. На этой странице привязаны к относительному пути.

Теперь это не будет работать, потому что все они ищут в другом пути,

я открываю на другой подход или изменить файл Htaccess.

ответ

1

Ваших URL-адреса получает перекос на переписан Структура URL, так как теперь есть еще два уровня каталогов. Вместо использования относительных URL-адресов в текущем каталоге используйте ведущий слэш для ваших ресурсов. Или вы можете использовать PHP для печати «корневого пути» к вашему приложению перед всеми вашими ресурсами.

Например, вместо использования относительный URL (к текущему каталогу):

<img src="images/plus.png" /> (расширяется до LocalHost/cprrpc/продукта/131/изображений/gplus.png)

можно использовать ведущий слэш, который делает URL относительно корня веб:

<img src="/cprrpc/images/plus.png" /> (расширяется до LocalHost/cprrpc/изображений/gplus.png)

ИЛИ можно напечатать корневой веб с помощью PHP:

<img src="<?php echo $WEB_ROOT ?>/images/plus.png" /> (расширяются до LOCALHOST/cprrpc/изображений/gplus.png)

+0

, но, добавив эти условия, моя оригинальная страница также не открывается. может быть, я что-то пропустил? – Kasma

+0

Ну, эти условия будут только фиксировать ресурсы, существующие в местоположении */product/xxx/yyy ... *, но не соответствуют чему-либо еще.В основном это не повлияет на вашу переписку вообще, если файл или каталог уже не существует в вашей файловой системе. Предположим, вы пытаетесь переписать 'product/131/ABCDEFGH', но у вас также есть эта точная файловая структура (что я сомневаюсь), тогда существующий файл/каталог будет выполнен как обычно .. но если вы удалите условия, которые он работает еще раз? – kjetilh

+0

извините, ваш код не потерял мою страницу, но все же он не открывается изображениями Не удалось загрузить ресурс: сервер ответил статусом 404 (не найден) http: // localhost/cprrpc/product/131/images/gplus.png , потому что изображения этой страницы относятся к основному URL-адресу, который является cprprc/images/glus.png – Kasma

1

Вы должны разрешить Apache обслуживать существующие файлы из их реального местоположения:

RewriteEngine on 
RewriteBase/

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

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

Это означает, что апач будет игнорировать переписывает, если изображение испрашивается ..

+0

но, как я добавил эти условия, мои оригинальные перезаписи также не открываются. может быть, я что-то пропустил? – Kasma

+0

Я пропустил! отрицание – Andrew

+0

извините, ваш код не потерял мою страницу, но все равно он не открывается изображениями Не удалось загрузить ресурс: сервер ответил статусом 404 (не найден) http: // localhost/cprrpc/product/131 /images/gplus.png , потому что изображения этой страницы относятся к основному URL-адресу, который является cprprc/images/glus.png – Kasma

Смежные вопросы