Mod_Rewrite:将URL重写为index.php,但将index.php重定向到root

时间:2015-02-26 07:04:57

标签: mod-rewrite

我想重写使用index.php的请求,这是非常标准的并且有效。

问题是存在旧的且现在无效的链接,其中包括index.php,我想将它们重定向到我网站的根网址。

潜在的重复内容包括:Rewrite URL to index.php but avoid index.php in the URL,但提到的答案对我不起作用。

RewriteEngine on

# This results in a redirect loop
#Redirect 301 /index.php http://domain.com

# This gets me a 500 error
# RewriteCond %{THE_REQUEST} ^GET\ /index\.php/?([^ ]*)
# RewriteRule ^index\.php/?(.*) / [L,R=301]

# Push www traffic to base domain.  <<= Works
RewriteCond %{HTTP_HOST} !^domain.com$ [NC] 
RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]

# Final rewrite to include index.php   <<= Works
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule /?([A-Za-z0-9_-]+)/?$ index.php?id=$1 [QSA,L]

网址:http://domain.com/index.php/component/fsf/?view=faq应该无效并且应该返回404错误但是由于我当前的重写规则,网站访问者将看到主页面。我想用301将其重定向到主页面,以便可以从搜索索引中删除它。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

将您的THE_REQUEST规则更改为

RewriteCond %{THE_REQUEST} ^GET\ /index\.php(/.*) [NC]
RewriteRule ^ /? [L,R=301]