我现有的.htaccess文件如下所示:
Options -Indexes
RewriteEngine On
RewriteBase /
RewriteRule ^(.+/)?posts/(.*)/(.*).html$ index.php?content=blog&postid=$2&kwd=$3
RewriteRule ^(.+/)?aposts/(.*)/(.*).html$ index.php?content=autopost&postid=$2&kwd=$3
RewriteRule ^(.+/)?category/(.*)/(.*).html$ index.php?content=category&cat=$2&otext=$3
RewriteRule ^(.+/)?content/(.*).html$ index.php?content=$2
RewriteRule ^(.+/)?searching/(.*).html$ index.php?content=search&k=$2
RewriteRule ^(.+/)?related/(.*).html$ index.php?content=related&k=$2
RewriteRule ^(.+/)?blog/(.*)/(.*).html$ index.php?content=blog&postid=$2&kwd=$3
RewriteRule ^(.+/)?posts$ index.php?content=blog
RewriteRule ^(.+/)?sitemap\.xml$ sitemap.php [L]
RewriteRule ^(.+/)?robots\.txt$ robots.php [L]
ErrorDocument 404 /404.php
我想为所有子目录添加使用root index.php文件的功能。例如,如果访问者转到根目录:
example.com
他们获得根index.php文件。
我想要它,以便任何人去任何其他子目录,例如:
example.com/sub1
example.com/sub1/sub2/sub3/etc..
他们从根目录获得index.php文件但浏览器地址栏仍显示子目录,例如:
example.com/sub1
example.com/sub1/sub2/sub3/etc..
展示如何为此规则添加例外也很棒。
感谢您的帮助。
答案 0 :(得分:1)
在RewriteBase /
下方添加:
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond $1 !^index\.php
RewriteRule ^(.+)$ /index.php [L]
要添加例外,只需添加更多RewriteCond
行。例如,要使其/foo/
不会被路由到index.php,请添加:
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond $1 !^foo/
RewriteCond $1 !^index\.php
RewriteRule ^(.+)$ /index.php [L]