.htaccess隐藏文件扩展名和强制尾随斜杠的麻烦

时间:2013-11-03 01:50:24

标签: php apache .htaccess mod-rewrite redirect

当我输入domain.com/page.php时,它不会自动更改为domain.com/page/。此外,对于子目录中的页面,如果我按照指向domain.com/sub/1/的链接,一切都很好,但如果我在浏览器中键入它,它会重定向到domain.com/1 /

这就是我在.htaccess中所拥有的

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

# Forces a trailing slash to be added
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]

我应该对子目录和根目录中的htaccess文件做些什么?我是新来的。

1 个答案:

答案 0 :(得分:0)

更改规则的顺序。

试试这个:

RewriteEngine on

# Forces a trailing slash to be added
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?[^/])$ /$1/ [R=301,L]

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