长话短说,我更新了一个电子商务网站,但不得不将新的静态CMS系统安装到子目录(/ wear)中。主要的电子商务商店仍然位于根目录(/)中,由于产品数量和SEO的影响,我需要将其留在那里。
我想设置只是index.php 的请求,以重定向到/ wear /
同时,如果有index.php?XXXXX的请求,我希望它仍然使用index.php文件。
我尝试过使用以下.htaccess代码,但它会重定向所有内容。谁能帮我这个?我为此问道道歉,因为我知道有多个线程,但似乎都没有提供一个好的答案。
尝试1
RedirectMatch /index.php https://domain/wear/
尝试2
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wear/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
答案 0 :(得分:1)
问题来自您的RewriteBase
。将其设置为/wear/
时,RewriteRule ^index\.php$ - [L]
实际上会转换为RewriteRule ^wear/index\.php$ - [L]
,而这并不是您想要的。
我会尝试这样的事情:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^index\.php$ /wear/ [L,R=301]
它的作用是:检查查询字符串是否为空,如果是,则将index.php
(在请求URI的开头,仅限/index.php
)重定向到/wear/
您还需要确保mod_rewrite
处于有效状态。
为此,您可以删除<IfModule mod_rewrite.c>
和</IfModule>
部分。如果mod_rewrite
不可用,则会触发错误500,因为RewriteEngine
命令将无法识别。