如果用户使用/index.php输入URL而不在网址中使用/index.php,我该如何重定向用户

时间:2013-03-07 10:20:50

标签: .htaccess mod-rewrite joomla joomla2.5

我在网站的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。请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

尝试添加以上您已有的规则:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /?(.*)/index\.php
RewriteRule ^ /%1/ [L,R=301]

如果您尝试匹配请求URI,它将导致循环,因为您已经拥有路由的规则请求index.php,将请求URI 重写为 index.php从而导致它在重写引擎循环时匹配。