Переписывание URL apache - PullRequest
       17

Переписывание URL apache

0 голосов
/ 07 августа 2010

Я хотел бы переписать два URL на моем веб-сайте, чтобы они были более дружественными для поисковых систем. Как я могу сделать это в моем .htaccess? Впервые я попробовал это, но получил 404 ошибки:

RewriteRule ^research/([0-9][0-9])$ /research/$1/ [R]
RewriteRule ^research/([0-9][0-9])/$ /urt.php?func=viewresearch&rid=$1 
RewriteRule ^research/([0-9])$ /research/$1/ [R]
RewriteRule ^research/([0-9])/$ /urt.php?func=viewresearch&rid=$1

Второй раз я попробовал:

RewriteEngine on 
RewriteRule ^products/([0-9][0-9])$ /products/$1/ [R]
RewriteRule ^products/([0-9][0-9])/$ /viewad.php?adid=$1 

Когда я перехожу к, например, http://www.example.com/products/12/, он перенаправляет, но, похоже, внешние загруженные файлы (Javascript, CSS и т. Д.) Отсутствуют. Почему это случилось?

1 Ответ

0 голосов
/ 27 сентября 2010

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

Таким образом, при использовании относительной ссылки на путь URL, такой как css/style.css, в базовом пути URL /products/12/, она разрешается в /products/12/css/style.css вместо /css/style.css. Потому что здесь /products/12/ - это основной URL-путь, а не /urt.php. URL-пути - это , а не пути к файловой системе! Клиент знает только URL и ничего больше.

Чтобы решить эту проблему, у вас есть несколько вариантов. Проще всего было бы использовать абсолютный путь URL /css/style.css, который не зависит от фактического базового пути URL. Или вы можете изменить базовый URL с помощью элемента BASE HTML (обратите внимание, что это влияет на каждый относительный URL). Или вы настраиваете относительный URL-путь, чтобы он соответствовал фактическому базовому URL-пути, поэтому в случае /products/12/ используйте ../../css/style.css.

...