当前位置:  开发笔记 > 编程语言 > 正文

Mod-rewrite Trailing Slash问题

如何解决《Mod-rewriteTrailingSlash问题》经验,为你挑选了2个好方法。

关于这个主题似乎没有太多信息,所以我将概述我的具体问题,然后我们可以将问题和答案塑造成更普遍的东西.

我有这个重写规则

RewriteEngine On
RewriteBase /bookkeepers/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/?$ index.php?franchise=$1

哪个更改此网址

http://example.com/location/kings-lynn

进入这一个

http://example.com/location/index.php?franchise=kings-lynn

我遇到的问题是,如果我添加一个尾部斜杠

http://example.com/location/kings-lynn/

然后查询字符串返回为

franchise=kings-lynn/

由于某些原因,我的CSS和Javascript文件都没有被加载.

有任何想法吗?



1> Greg..:

正如@Paul Tomblin所说,.+正在贪婪; 也就是说,它尽可能地匹配.

^(.+[^/])/?$告诉它匹配任何东西,然后是一个不是/的字符,然后是一个可选的/.这具有不捕获尾随/的效果.

你的CSS和Javascript不起作用的最可能的原因是你使用的是相对路径,比如src ="my.js".当有一个尾部斜杠时,它看起来像一个目录,所以你的浏览器会寻找/location/kings-lynn/my.js.您可以通过使用文件的绝对路径(例如/location/my.js)来解决此问题.



2> Paul Tomblin..:

看起来(.+)正在贪婪匹配.在那种情况下,你可以试试

RewriteRule ^(.+[^/])/?$ index.php?franchise=$1

这可确保第一组(在括号中)不以斜线结尾.

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有