我已将网站中的许多网址从:/folder/page.php移至: /folder/page/。
现在我想将旧 url 重定向到新 url,所以我添加了.htaccess这个规则:
RedirectMatch permanent /folder/(.*)\.php https://www.site.it/folder/$1/
Run Code Online (Sandbox Code Playgroud)
但它不起作用,此规则首先重定向到/folder/page/然后再次重定向到/folder/page/index/
所以我试过这个:
RedirectMatch permanent /folder/(?!index)\.php https://www.site.it/folder/$1/
Run Code Online (Sandbox Code Playgroud)
但它的工作原理类似于上述规则。
我也测试过:
RedirectMatch permanent /folder/(?!index)(.*)\.php https://www.site.it/folder/$1/
Run Code Online (Sandbox Code Playgroud)
又一样。
我.htaccess只在根文件夹中使用,这里是新规则之前的内容:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Run Code Online (Sandbox Code Playgroud)
这些规则需要将http流量重定向到https我使用的网络托管服务并由其建议。
我还测试了错误的RedirectMatch规则,没有任何其他规则。
如何重定向所有页面,除了index.php?
这是 url 列表和所需的行为:
RedirectMatch permanent /folder/(.*)\.php https://www.site.it/folder/$1/
Run Code Online (Sandbox Code Playgroud)
请不要建议使用 mod_rewrite,因为它不是此处描述的最佳实践。