0

我有一个正在尝试开发的网站,但在让我的重写规则正常工作时遇到了一些(可能是菜鸟)问题。

基本上,我使用 codeIgniter 框架来开发站点,作为其中的一部分,我创建了一个 RewriteRule 来删除 URL 的 index.php 部分,但一些图像文件夹除外。

RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|shop)
RewriteRule ^(.*)$ /TESTSite/index.php/$1 [L]

该网站最初有一个当前页面,page/facilities/our-shop该页面是一个非常基本的页面,带有几个指向贝宝的链接,以便我们快速制作一个非常粗糙的商店页面。但是现在我已经实现了一个不同的(阅读 OpenCart)商店部分,以使其更专业并允许更多功能等。我将 openCart 放在一个名为shop. 商店继续正常工作,因为我已将 排除在/shop我原来的重写规则之外。

但是-我的问题...我希望旧页面page/facilities/our-shop重定向到/shop,因此就像我直接导航到那里一样工作。

我尝试了以下方法:

RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|shop)
RewriteRule ^page/facilities\/our-shop$  /TESTSite/shop/$1 [R,NC,L]
RewriteRule ^(.*)$ /TESTSite/index.php/$1 [L]

RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|shop)
RewriteRule ^page/facilities\/our-shop$  /TESTSite/shop/$1 [N]
RewriteRule ^(.*)$ /TESTSite/index.php/$1 [L]

还有其他一些变化,但每次我都无法让它工作。有人可以建议吗?

谢谢

4

1 回答 1

2

我认为您可以尝试以下规则:

RewriteEngine on
RewriteRule TESTSite/page/facilities/our-shop$  /TESTSite/shop/$1 [R=301]

RewriteCond %{REQUEST_URI} !^(index\.php|images|css|js|robots\.txt|shop)
RewriteRule ^TESTSite/page/(.*)$ /TESTSite/index.php/$1 [L]

两件事情:

  • 使用RewriteCond时,仅适用于以下规则。所以我重新订购了这两行。
  • \在规则之前不需要/a。

检查此工具以调试您的规则。

于 2013-10-26T09:20:48.860 回答