关于这个主题似乎没有太多信息,所以我将概述我的具体问题,然后我们可以将问题和答案塑造成更普遍的东西。
我有这个重写规则
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文件都没有被加载。
有什么想法吗?
答案 0 :(得分:10)
正如@Paul Tomblin所说,。+正在贪婪;也就是说,它尽可能地匹配。
^(.+[^/])/?$
告诉它匹配任何内容,后跟一个不是/的字符,然后是一个可选的/。这具有不捕获尾随/.
你的CSS和Javascript不起作用的最可能的原因是你使用的是相对路径,比如src =“my.js”。当有一个尾部斜杠时,它看起来像一个目录,所以你的浏览器会寻找/location/kings-lynn/my.js。您只需使用文件的绝对路径(例如/location/my.js)即可解决此问题。
答案 1 :(得分:6)
看起来(。+)正在贪婪匹配。在这种情况下,您可以尝试
RewriteRule ^(.+[^/])/?$ index.php?franchise=$1
这可确保第一组(在括号中)不以斜线结尾。