如何使我的Htaccess删除扩展,而目录后没有文件名

时间:2013-01-06 11:06:06

标签: php .htaccess

我在PHP编码,并实现了一个删除文件扩展名的htaccess代码(在这种情况下' .php')。

问题是,这并不允许目录删除末尾的index.php。

即。 http://www.domain.com/about/ - 在此服务器上找不到请求的URL /about/.php。

这是我目前的代码:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

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

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*[^.#?\ ]+\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(([^/]+/)*[^.]+)\.php http://www.domain.com/$1 [R=301,L]

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^index\.php/?$ / [L,R=301,NC]

我希望/ about /重定向到/about/index.php,而只是显示/ about /

先谢谢你们!

2 个答案:

答案 0 :(得分:1)

只需在htaccess文件中使用DirectorySlash  apatche会自动在目录名后添加尾部斜杠

DirectorySlash On

如果你想调用没有尾部斜杠的目录,请尝试:

DirectorySlash Off

答案 1 :(得分:0)

你可以试试这个:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ([^/]+)/? [NC]
RewriteRule .*  %1/index.php [L,QSA]

它将静默地映射

http://www.domain.com/anything/

http://www.domain.com/anything/index.php