尝试从中删除index.php,然后解析为有效的子目录名称,但是在对.htaccess文件进行更改后,所有其他页面都会重定向到子目录。
例如:
已更改:site.com/subdir/index.php
至site.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 /而不是该目录中的其他页面?
答案 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]