我有一个我正在尝试开发的网站,而且我有一些(可能是noob)问题让我的重写规则正常工作。
基本上,我正在使用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
,这是一个非常基本的页面,其中包含一些指向paypal的链接,以便制作一个非常粗糙的商店页面,因为我们需要快速购买。但是现在我已经实现了一个不同的(读取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]
还有一些其他的变化,但每次我都无法让它发挥作用。有人可以提出建议吗?
由于
答案 0 :(得分: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
时,它仅适用于以下规则。所以我重新订购了两条线。\
之前不需要/
。检查this tool以调试您的规则。