我修改了一个网站,重定向到一个页面:
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/123 /什么不适用于.com / no_slash_url工作时的图像,css或javascript?
答案 0 :(得分:2)
您在没有重定向的情况下进行重写,因此客户端认为它位于原始的unrewritten URL,并且所有相对路径将相对于该URL进行解析。您应该能够使用<base>
元素解决此问题:
<base href="http://myserver.com" />
<小时/> 让我试着用一个例子来澄清这一点。如果我的页面位于
http://mysite.com/index.php
且其所有图片均位于http://mysite.com/images/
,则我的图片可能会被{em>相对网址引用,例如images/myImg.png
。客户端使用地址栏中的当前路径转换此URL。现在,如果我重写我的网址使其看起来像http://mysite.com/mycategory/myarticle
,那么任何相对图片都会解析为http://mysite.com/mycategory/myimages/
,这是不正确的。通过添加基本标记:
<base href="http://mysite.com" />
现在,每个浏览器都会解析相对于该路径的图片,正确地查找http://mysite.com/images/
。
答案 1 :(得分:0)
查看html base tag
<base href="http://www.mysite.com/" />