.htaccess从subdir中删除index.php重定向所有动态页面

时间:2016-09-20 18:52:59

标签: php .htaccess

尝试从中删除index.php,然后解析为有效的子目录名称,但是在对.htaccess文件进行更改后,所有其他页面都会重定向到子目录。
例如:
已更改:site.com/subdir/index.phpsite.com/subdir/,但随后site.com/subdir/page?id=4解析为site.com/subdir/


htaccess的:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]


RewriteBase /subdir/

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

如何编写此规则以便只有index.php解析为/ subdir /而不是该目录中的其他页面?

1 个答案:

答案 0 :(得分:1)

您可以在站点根目录中使用这些规则.htaccess:

RewriteEngine On

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

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ subdir/index.php [L]