我正在使用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?
如果我想访问查询参数,是否必须从实际的URL (?skin=...)或重写的url中提取它?
谢谢你帮忙!
编辑:
因此,我让它像这样工作(有用的测试人员这里):
<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还没到呢。
发布于 2013-05-10 00:25:17
我建议以不同的方式对应用程序进行剥皮。你现在拥有它的方式将产生重复的内容问题与搜索引擎,因为他们将看到相同的内容,为您的网站上的每一个皮肤。
也就是说,yoursite.com/dark/about.html将是与yoursite.com/spring/about.html相同的内容,因此搜索引擎可能很难决定使用哪个版本。此外,它似乎将创建额外的工作链接到您的网站上的其他页面,因为您将不得不创建您的链接通过编程使用适当的路径和皮肤。
我只需要一个URL来激活皮肤,并将它们的偏好存储在cookie或会话中,并根据cookie/session值来皮肤站点,并且只维护一组URL。
除非您真的希望皮肤在URL中,否则我会避免使用URL或查询字符串来指示要使用的皮肤。相反,请将其作为附加到帐户或存储在cookie中的首选项。
https://stackoverflow.com/questions/16472401
复制相似问题