Как я могу сделать переписать htaccess, чтобы не влиять на другие ссылки на моей странице - PullRequest
0 голосов
/ 28 октября 2018

После использования .htaccess для перезаписи моего URL я столкнулся с другой проблемой.Все остальные ссылки на моей detail.php странице больше не являются правильными.

Пример:

Это должен быть обычный URL:

http://localhost/FashionSite/about-us.php

Но теперь он отображаетсяthis:

http://localhost/FashionSite/product/Coporate/polo-and-trouser/about-us.php

Это происходит со всеми URL-ссылками на этой detail.php странице.

Ниже мой .htaccess код, и он работает хорошо, но на странице detailвсе остальные URL-адреса меняются:

<IfModule mod_rewrite.c> 
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(admin|user)($|/) - [L]
RewriteRule ^(slide|user)($|/) - [L]
RewriteCond %{REQUEST_URI} !\.(?:css|js|jpe?g|gif|png)$ [NC]
RewriteRule ^product/(.*)/(.*)/ detail.php?ID=$1&url=$2 [L]
RewriteRule ^product/[^/]+/[^/]+(/.+)$ http://localhost/FashionSite/$1  [L]
</IfModule>

Пожалуйста, что мне делать или добавлять в код, чтобы эти ссылки были нормальными.

1 Ответ

0 голосов
/ 28 октября 2018

Похоже, вы используете относительные URL-адреса для ссылки на свои страницы.Все относительные ссылки в HTML относятся к URL на стороне клиента.Если вы переписываете URL, то ваши ссылки теперь будут относиться к переписанному URL.

Например, если браузер в настоящее время показывает URL http://localhost/FashionSite/product/Coporate/polo-and-trouser/detail.php, тогда якорь формы <a href="about-us.php"> будетестественно относиться к этому URL-адресу, и браузер разрешит его как http://localhost/FashionSite/product/Coporate/polo-and-trouser/about-us.php.

. Вам нужно изменить внутренние ссылки, чтобы использовать либо относительный корень (начиная с косой черты), либо абсолютный URL-адрес (со схемой+ имя хоста).Например: <a href="about-us.php"> следует изменить на <a href="/FashionSite/about-us.php"> (Если все находится в подкаталоге /FashionSite.

Или, установите тег base в head вашей страницы, который указывает напросмотрите в браузере URL-адрес, по которому все относительные ссылки должны быть относительно к. Например:

<base href="http://localhost/FashionSite/index.php">

Однако тег base не лишен предостережений. Например, якоря на страницеформа <a href="#top" теперь также относится к этому базовому URL-адресу. Желательно изменить все ссылки, которые у вас есть, на корневые (или абсолютные).

См. мой ответ о стеке профессиональных веб-мастеров, в котором обсуждается аналогичная проблема:

...