Apache переписать со многими слэш не работает? - PullRequest
1 голос
/ 14 марта 2010

Я изменил сайт с перенаправлением на одну страницу:

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

Это работает так, как должно быть. Все перенаправлено на index.php. Вот рабочий пример, который отображает index.php со всеми изображениями и css:

http://.....com/section1

Проблема возникает при попытке:

http://....com/section1/subsection

Страница перенаправлена ​​на index.php, НО изображений нет, нет CSS, нет JavaScript. Внутри PHP-скрипта все это напрямую связано с изображениями, css или javascript:

<img src="images/images1.png> ... <img src="images2.png">

Почему URL со многими косыми чертами, такими как .com ../123/12 /, не работает с изображениями, CSS или JavaScript, когда работает .com / no_slash_url?

Ответы [ 2 ]

2 голосов
/ 14 марта 2010

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

<base href="http://myserver.com" />

<ч /> Позвольте мне попытаться уточнить это на примере. Если у меня есть страница на http://mysite.com/index.php, а все ее изображения на http://mysite.com/images/, мои изображения могут ссылаться на относительно url, например images/myImg.png. Клиент переводит этот URL, используя текущий путь в адресной строке. Теперь, если я переписываю свои URL-адреса так, чтобы они выглядели как http://mysite.com/mycategory/myarticle, любые относительные изображения разрешались бы до http://mysite.com/mycategory/myimages/, что неверно. Добавляя базовый тег:

<base href="http://mysite.com" />

Каждый браузер теперь вместо этого разрешает изображения, относящиеся к этому пути, правильно ища http://mysite.com/images/.

0 голосов
/ 14 марта 2010

Взгляните на html базовый тег

<base href="http://www.mysite.com/" />
...