0

我在我的网站中遇到了 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。

但我的问题是,当有人将 URL 与index.php(例如https://example.com/index.php/test)一起放置时。所以它也会起作用。这是一个问题,我希望当用户将 /index.php 与 URL 一起放置时,它会重定向到同一页面而无需/index.php在其中。请帮我解决这个问题。

4

1 回答 1

0

尝试将其添加到您已有的规则之上:

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

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

于 2013-03-07T10:37:46.403 回答