我希望能够在没有.php,.html等的情况下访问我的脚本,所以我已经写了
RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}\.php -f
RewriteRule ^(.*)$ $1.php
##same for other extensions
在我的.htaccess文件中(注意:此文件不在根路径中),但我还想将每个不正确的请求重定向到我的主页面,以便重写www.mysite.com/dir/incorrect到www.mysite.com/dir /.
但是我的第一次尝试(RewriteCule之后的RewriteRule ^ / [R])将我重定向到www.mysite.com/,我使用RewriteBase(RewriteBase。和RewriteBase /)的实验没有工作,我也注意到许多类似的scriptredirect转到www .mysite.com / dir / index.php(www.mysite.com/dir/index),但我真的想重定向到www.mysite.com/dir/。有没有办法实现这个目标?
答案 0 :(得分:2)
这样做:
RewriteEngine on
# see if .php is found
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}\.php -f
RewriteRule ^(.*)$ $1.php [L]
# determine DIR_BASE dynamically
RewriteCond %{REQUEST_URI}::$1 ^(.*?/)(.*)::\2$
RewriteRule ^(.*)$ - [E=DIR_BASE:%1]
# if not found redirect to %{ENV:DIR_BASE}
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ %{ENV:DIR_BASE} [L,R]