用许多斜杠重写的Apache不能正常工作?

时间:2010-03-13 21:48:51

标签: php apache mod-rewrite url-rewriting

我修改了一个网站,重定向到一个页面:

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?

2 个答案:

答案 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/" />