除了两页之外,将所有页面重定向到主页

时间:2016-10-17 16:33:29

标签: regex apache .htaccess mod-rewrite

根目录是文件index.php和.htaccess配置文件。如何使301重定向/(主页面)中的所有URL,但使用字符串http://mysite.loc/1,http://mysite.loc/2和http:// mysite对URL进行重定向。 loc /?

例如:

http: //mysite.loc/ (URL available, show index.php)
http: //mysite.loc/1 (URL available, show index.php)
http: //mysite.loc/2 (URL available, show index.php)
http: //mysite.loc/testing (301 redirect on /)
http: //mysite.loc/qwerty (301 redirect on /)

问题在于对主页的无限重定向。

注意:您必须仅在配置文件.htaccess中创建规则,不能使用PHP脚本。

所有可用的URL都指向/(index.php文件)

2 个答案:

答案 0 :(得分:0)

这样的事情应该有效:

RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteCond %{REQUEST_URI} !/(1|2) [NC]
RewriteRule ^(.*)$ / [L,R=301]

答案 1 :(得分:0)

您可以将此规则用作第一条规则:

RewriteEngine On

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

RewriteRule !^(1|2|index\.php)?/?$ / [L,R=301]

RewriteRule ^(1|2)?/?$ index.php [L]

在测试此更改之前清除浏览器缓存。