.htaccess 参数存在时用于重定向的htaccess规则

ljsrvy3e  于 2022-11-16  发布在  其他
关注(0)|答案(2)|浏览(167)
RewriteEngine On
RewriteRule ^$ /index.phtml [R,L]
RewriteRule ^index.phtml.+$ /index.php$1 [R,L]

我有两个网址,如https://www.example.com/index.phtmlhttps://www.example.com/index.php,这两个都指向非常不同的网站。我想重定向到index.php,以防在index.phtml后发现任何参数。
例如,https://www.example.com/index.phtml?a=b应该转到https://www.example.com/index.php?a=b(第二个规则)。我正在尝试上述规则,但第二个规则不匹配(第一个规则工作正常)。感谢您的帮助/建议
如果你需要更多的细节,请询问。

j1dl9f46

j1dl9f461#

您可以在站点根目录.htaccess中使用以下代码:

RewriteEngine On

# if there is a query string then redirect
# /index.phtml to /index.php 
RewriteCond %{QUERY_STRING} .
RewriteRule ^(?:index\.phtml)?$ /index.php [L,NC]

# redirect landing page to /index.phtml
RewriteRule ^$ /index.phtml [R=302,L]

请注意,QUERY_STRING会自动附加到目标URL,因此/index.phtml?a=b将被重定向到/index.php?a=b
请确保在测试此更改之前清除浏览器缓存。
验证它工作正常后,将R=302替换为R=301。测试重定向规则时,避免使用R=301(永久重定向)。

xzv2uavs

xzv2uavs2#

使用显示示例,请尝试以下.htaccess规则文件请确保htaccess文件和index.php位于同一文件夹中
此外,请确保在测试URL之前清除浏览器缓存。

RewriteEngine ON
##For without query string rules.
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^index\.phtml/?$ index.php [R=301,NC,L]

##For query string rules.
RewriteCond %{THE_REQUEST} \s.index\.phtml\?([^=]*=\S+)\s [NC]
RewriteRule ^ index\.php?%1 [R=301,L]

相关问题