.htaccess -在使用www. example. com访问网站时,如果没有查询字符串参数,是否永久重定向到根目录mysite.com/index.php?

jhiyze9q  于 2022-11-16  发布在  PHP
关注(0)|答案(1)|浏览(136)

我在我的网站上使用一个模板。这个模板的设计方式是所有的东西都在index.php文件中,但函数是基于index.php文件中的查询字符串执行的。
我想永久重定向到根mysite.com时,我的网站是用index.php访问没有查询字符串参数,但如果有任何查询字符串参数,那么它不应该被重定向,并应保持不变。
为了实现这一点,我在我的.htaccess文件中添加了以下内容,但它会影响查询字符串,并且站点无法正确导航。

...
RewriteCond %{THE_REQUEST} ^.*/index\.php 
RewriteRule ^(.*)index.php$ /$1 [R=301,L]
...

谢谢你的帮助。

wz1wpwve

wz1wpwve1#

RewriteCond %{THE_REQUEST} ^.*/index\.php 
RewriteRule ^(.*)index.php$ /$1 [R=301,L]

正则表达式^.*/index\.php匹配index.php后跟的任何内容,这自然包括查询字符串。
如果在文档根目录中总是index.php,那么上述内容可以进一步简化,因为在URL路径中,/index.php之前不会有任何内容。
请尝试以下方法:

RewriteCond %{THE_REQUEST} \s/index\.php\s
RewriteRule ^index\.php$ / [R=301,L]

请注意前面的 CondPatternindex.php后面的 * 空格 *(即\s)表示URL的结束。
首先使用302(临时)重定向进行测试,以避免潜在的缓存问题。在测试之前,您需要清除浏览器缓存,因为错误的301将被缓存。

相关问题