#php #.htaccess #redirect
#php #.htaccess #перенаправление
Вопрос:
ниже приведена моя структура каталогов.
|--inc (folder)
|-->header.php
|-->footer.php
|--css (folder)
|--js (folder)
|--images (folder)
|--index.php
|--product.php
|--items.php
все файлы php index.php
, product.php
items.php
используются для включения файлов в inc
папку
Теперь я использую .htaccess для перенаправления моего использования, например, я хочу, чтобы некоторые файлы перенаправлялись на product.php
, а некоторые файлы на item.php
.
Первый подход
<IfModule mod_rewrite.c>
Options FollowSymLinks
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^([A-Za-z0-9-] )$ ./product.php?fd=$1 [L,NC,QSA]
RewriteRule deal/([A-Za-z0-9-] )$ ./item.php?id=$1amp;id2=$2 [L,NC,QSA]
</IfModule>
При таком подходе URL содержимого (CSS, JS, изображений, файлов .php) также перенаправляется и изменяется на / deal / css или / deal / images и т.д. В моем item.php
файле, но там нет имени папки deal
.я просто добавил deal
, чтобы устранить конфликт между двумя перенаправлениями
Второй подход
<IfModule mod_rewrite.c>
Options FollowSymLinks
RewriteEngine On
# first try to see if belongs to item.php based on URI pattern
RewriteRule ^([a-z0-9-] )/([a-z0-9-] )$ ./item.php?idd=$1amp;id=$2 [L,NC,QSA]
# No try /j/display.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z0-9-] )$ ./product.php?fd=$1 [L,NC,QSA]
</IfModule>
В этом коде также была такая же проблема
пожалуйста, помогите!!! приветствуется любая помощь..
Ответ №1:
Проблема не в том, что ваши правила переписывают запросы для вашего css, изображений или javascript, а в том, что вы используете относительные ссылки в своем контенте, и /deal/
часть URL-адреса заставляет браузер думать, что вы * на самом деле хотите, чтобы ваши скрипты / изображения / css находились в /deal/
папке. Вам нужно сделать ваши ссылки абсолютными URL-адресами или добавить относительную базу URI в заголовок вашей страницы:
<base href="/" />
Комментарии:
1. спасибо, что ответили на мой вопрос, но не могли бы вы, пожалуйста, уточнить это? Я новичок во всем этом.
2. а также я не могу указать абсолютный путь из-за следующих предупреждений Warning : include(): http:// оболочка отключена в конфигурации сервера с помощью allow_url_include=0 в C:xampphtdocsshopitem.php в строке 2 предупреждение: включить( localhost/shop/admin/qconnect.php ): не удалось открыть поток: не удалось найти подходящую оболочку в C:xampphtdocsshopitem.php в строке 2 предупреждение: include(): сбой при открытии ‘ localhost/shop/admin/qconnect.php ‘ для включения (include_path=’.;xamppphpPEAR’) в C:xampphtdocsshopitem.php в строке 2
3. @Anonymous Когда вы переходите по URL-адресу, подобному:
/deal/abcd1234
, и у вас есть URI, подобный этому, в содержимом страницы:<img src="images/1.png">
. Браузер должен «угадать», какова база URL-адресов, и он делает это, просматривая URL-адрес в строке местоположения (браузер совершенно не имеет представления о перезаписи на сервере или о том, где на самом деле находится содержимое), и он видит/deal/
, поэтому он использует это в качестве базы URL-адресов и добавляет это ко всем относительным URL-адресам в содержимом, делая его похожим:/deal/images/1.pmg