mod_rewrite и проблемы с окончанием косой черты (Apache PHP)

#php #apache #.htaccess #mod-rewrite #apache2.2

#php #apache #.htaccess #mod-перезапись #apache2.2

Вопрос:

Я искал довольно долго, но не смог найти точно такую же проблему, как и у меня.

Я надеюсь, что кто-нибудь здесь сможет мне помочь, так как сейчас я очень расстраиваюсь из-за этого.

Я запускаю Apache 2.2 с mod_rewrite вместе с PHP-проектом, над которым я работаю.

Я успешно включил mod_rewrite для Apache, и я использую приведенный ниже .htaccess:

 RewriteEngine On
RewriteBase /minpt.net/htdocs
RewriteRule ^([a-zA-Z0-9] )$ ./?page=$1 [L]
RewriteRule ^([a-zA-Z0-9] )/$ ./?page=$1 [L]
  

У меня есть ссылка, подобная:

 http://localhost/myproject/?page=news
  

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

 http://localhost/myproject/news
  

Или…

 http://localhost/myproject/news/
  

(Обратите внимание на конечный след).

Используя мой текущий файл .htaccess (см. Выше), ссылка № 1 без завершения трассировки работает так, как я хочу. Но как только я пытаюсь получить доступ к URL-адресу, используя конечный след, я попадаю в неправильный относительный каталог, и мои CSS, изображения и т. Д. Все портятся, потому что он думает, что я нахожусь в другом рабочем каталоге.

Как я могу предотвратить это?

Ответ №1:

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

Альтернативно, добавьте следующий тег к тегу head:

 <base href="//example.com/myproject/">
  

Этот URL-адрес будет использоваться в качестве основы для любого относительного URL-адреса на вашем веб-сайте. Это перезаписывает текущий URL-адрес, который вы просматриваете. См. mdn для получения дополнительной информации об этом теге.