我正在使用url-rewriting
执行我的第一步,但无法使用以下内容:
在我的应用程序中,可以通过将查询参数?skin=some_id
应用于应用程序中的任何页面来加载外观。我想改变:
http://www.mysite.com/anypage.html?skin=123
成:
http://www.mysite.com/123/anypage.html
但我无法让它发挥作用。
这是我目前在httpd.conf
:
<IfModule mod_rewrite.c>
RRewriteRule (.*)/(.*)?app=(.*)$ %1/%3/%2 [NC,R=301,L]
</IfModule>
问题:
这不行,所以我想知道我做错了什么?
使用URL时,用户输入的URL是多少? http://www.mysite.com/123/anypage.html
“映射”到http://www.mysite.com/anypage.html?skin=123
?
如果我想访问查询参数,是否必须从实际网址(?skin=...
)或重写的网址中提取它?
感谢您的帮助!
修改
所以我有点像这样做(有用的测试人员here):
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} skin=(\w+)
RewriteRule ^.*\.html /%1? [R=301]
</IfModule>
这将重定向:
www.some.com/index.html?skin=xyz => www.some.com/xyz
还没有。
答案 0 :(得分:1)
我建议以不同的方式为您的应用设置皮肤。您现在拥有它的方式会给搜索引擎带来重复的内容问题,因为他们会为您拥有的每个皮肤看到网站上每个网页的相同内容。
也就是说,yoursite.com/dark/about.html
与yoursite.com/spring/about.html
的内容相同,因此搜索引擎可能很难决定使用哪个版本。此外,它似乎会为链接到您网站上的其他页面创建额外的工作,因为您必须以编程方式创建链接以使用正确的路径和皮肤。
我只有一个用于激活皮肤的URL并将其偏好存储在cookie或会话中,并根据cookie /会话值为站点设置皮肤,并且只维护一组URL。
除非你真的希望皮肤在URL中,否则我会回避使用URL或查询字符串来指示要使用的皮肤。取而代之的是附加到帐户或存储在cookie中的首选项。