Mod rewrite 使用RewriteRule缩短URL:完全删除内容根目录?

Mod rewrite 使用RewriteRule缩短URL:完全删除内容根目录?,mod-rewrite,websphere-commerce,Mod Rewrite,Websphere Commerce,我正在尝试缩短URL,如下所示: www.mystore.com/webapp/wcs/stores/servlet/CategoryDisplay?langId=-1& storeId=10001&catalogId=10001&categoryId=10006 ……为此: www.mystore.com/CategoryDisplay?langId=-1&storeId=10001&catalogId=10001& categoryId=10

我正在尝试缩短URL,如下所示:

www.mystore.com/webapp/wcs/stores/servlet/CategoryDisplay?langId=-1& storeId=10001&catalogId=10001&categoryId=10006
……为此:

www.mystore.com/CategoryDisplay?langId=-1&storeId=10001&catalogId=10001& categoryId=10006
使用IBM的示例,我可以通过在Apache配置中执行以下操作,轻松摆脱大部分URL:

RewriteRule ^shop/(.*) /webapp/wcs/stores/servlet/$1
然后将其添加到wc-server.xml文件:

<context-root-rewrite value=“/shop” />


有可能完全去掉/shop/前缀吗?Apache(又称IIS)中似乎没有任何东西可以阻止这一点,但Websphere Commerce是否会因此而窒息?

回答:因为在这种情况下,我们只是重新路由servlet的请求。如果有任何其他内容,就会出现混乱。我们基本上是将一个分支移动到根的分支,但还有其他分支

只要把

httpd.conf:

 RewriteRule ^/(?!wcsstore)(.*) /webapp/wcs/stores/servlet/$1 [PT,L]
  <SEOConfiguration defaultUrl=""
                    dynamicUrl="true"
                    enable="true">
      <context-root-rewrite value="/" />
  </SEOConfiguration>
wc server.xml:

 RewriteRule ^/(?!wcsstore)(.*) /webapp/wcs/stores/servlet/$1 [PT,L]
  <SEOConfiguration defaultUrl=""
                    dynamicUrl="true"
                    enable="true">
      <context-root-rewrite value="/" />
  </SEOConfiguration>


重新启动server1和http服务器。

您使用的是什么版本的WCS?根据packVersion 7 FP 4的版本/修复程序,有更好/更健壮的方法来实现这一点。如果你知道的话,我会看一下2012年马德里发布的幻灯片:对URL的静态部分使用mod.rewrite,然后对翻译语言、商店、目录和类别的模式文件使用mod.rewrite。我不知道这些,但对于这种特殊情况,RewriteRule^/(.*)/webapp/wcs/stores/servlet/$1有效吗?对不起,我病了几天了。我将检查并报告。嗯,刚刚意识到我不能在我的开发环境中测试它,因为我在WCS中运行。一旦问题解决,我会给你回复的。