Php Apache重写中的许多斜杠不起作用?
我修改了一个网站,重定向到一个页面:Php Apache重写中的许多斜杠不起作用?,php,apache,mod-rewrite,url-rewriting,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
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">
。。。
当.com/no\u slash\u url工作时,为什么带有许多斜杠的url像.com../123/123/任何东西都不能与图像、css或javascript一起工作?您在没有重定向的情况下重写,因此客户端认为它位于原始未写入的url,所有相关路径都将相对于该url解析。您应该能够使用以下元素解决此问题: 每个浏览器现在将解析相对于该路径的图像,正确查找
http://mysite.com/images/
看看html
这难道不会让dns在每一张图片、css和javascript上都能毫无意义地查找吗?达克:我不知道我是否明白你的意思。
标记用于指定解析其他相对url的url。许多URL重写CMS应用程序(如Joomla和Drupal)都使用这种技术。我不明白这一点。为什么要使用base
标记,而不只是地址/images/xyz.jpg
?但是,我还不太明白OP想要什么。@Pekka:在我看来,添加
标记比更改许多图像标记简单。对我来说,这似乎更“正确”。当你的真实url不在当前路径时,你应该将基设置为真实路径。这将避免将来(即下次添加图像时)再次出现混淆和相同的问题@Andy我可以理解你的推理,但我一点也不喜欢base
标记,因为它带来了长期的维护复杂性-它意味着一个不同的路径上下文,只能通过页面中某个位置的标记才能看到。我倾向于克服困难,用运行我可以看到base
在这种情况下是如何工作的,但我个人还是不会使用它。顺便说一句“^.*$”应该是“^(.*)$”^=Start”“()=Group”“$=Final”“@Daok你想实现什么-你想让所有图像都被index.php解析,还是不想让图像被index.php解析?我想能够看到所有php页面中的图像、javascript和CSS,但我正在用前端控制器(在index.php中)移动所有网站,该控制器将包括good.php页面。好的,我已经按照你告诉我的那样修改了.htAccess。
<base href="http://myserver.com" />
<base href="http://mysite.com" />
<base href="http://www.mysite.com/" />