我在网站的URL重定向方面遇到了一些问题。这是我的.htaccess文件:
RewriteEngine On
# Start –301 redirect for "http://" to "http://www"
Options +FollowSymLinks
rewritecond %{http_host} ^example.com [nc]
rewriterule ^(.*)$ http://www.example.com/$1 [r=301,L]
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /?(.*)/index\.php
RewriteRule ^(.*)$ /%1/ [L,R=301]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
这很好用。所有URL都可以正常工作,而不需要/index.php。
但我的问题是当有人放置了index.php
的网址时(例如https://example.com/index.php/test
)。所以它也会奏效。这是一个问题,我希望当用户将/index.php与URL放在一起时,它会重定向到同一页面,而不会有/index.php
。请帮我解决这个问题。
答案 0 :(得分:0)
尝试添加以上您已有的规则:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /?(.*)/index\.php
RewriteRule ^ /%1/ [L,R=301]
如果您尝试匹配请求URI,它将导致循环,因为您已经拥有路由的规则请求index.php,将请求URI 重写为 index.php从而导致它在重写引擎循环时匹配。