我正在尝试设置mod_rewrite
以使应用程序的URL更好一些。
我有一个skinnable系统,通过query parameter
设置皮肤,所以任何下面的链接将触发一个特定的皮肤加载(并存储为cookie):
www.mysite.com/index.html?skin=123
我正在尝试使入口链接进入系统,所以我使用这个:
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^/(.*)/$ /index.html?app=%1 [L] </IfModule>
这似乎工作正常,所以我正在加载下列链接正确的页面:
www.mysite.com/890/ => www.mysite.com/index.html?skin=890
但是,只有我的初始页面被正确加载,所有CSS和JS文件仍然被请求从错误的pathwww.mysite.com/890/
与www.mysite.com
题:
我怎么能重写所有请求的文件(CSS,JS,IMG …)被正确redirect,不包括/890/
path? 另外,有没有办法使我的重写更通用,以便我可以处理这两个
www.mysite.com/890/ => www.mysite.com/index.html?skin=890 www.mysite.com/890/foo.html => www.mysite.com/foo.html?skin=890 www.mysite.com/890/bar.html => www.mysite.com/bar.html?skin=890
感谢您的光芒!
因为您已将其设置为仅重写以斜杠结尾的URI。 如果你希望它也使用斜线后面的任何内容,那么你需要多一点。 尝试这个:
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^/(.*)/$ /index.html?app=%1 [L] RewriteRule ^/(.*)/(.+)$ /$1?app=$2 [L] </IfModule>
第二个规则是“如果它包含一个斜线,那么将所有内容存储到$ 1中的下一个斜线,然后忽略斜线,第二个斜线后面的所有内容都应该存储在$ 2中。
www.mysite.com/foo/
将被第一条重写规则所捕获,并被重写为www.mysite.com/index.html?skin=foo
www.mysite.com/foo/whatever.html
将被第二条重写规则所捕获,并被重写为www.mysite.com/whatever.html?skin=foo