htaccess删除.php扩展名,index.php并添加尾部斜杠

时间:2010-06-11 16:51:02

标签: .htaccess mod-rewrite url-rewriting

这是针对基本的HTML / PHP页面,没有查询字符串等。我搜索了高低,找到了从URI中删除'index.php'的资源,或删除'.php'和其他文件扩展名..甚至添加一个尾部斜杠。但是,每当我尝试全部使用它们,或者使用我找到的示例时,我都会收到500服务器错误。

我可以在一个页面上传递查询字符串,但实际上我只想从索引页面中删除“index.php”并使所有子页面都没有文件扩展名。所以,像这样:

domain.com/index.php到domain.com/ domain.com/page1.php到domain.com/page1/ domain.com/page2.php到domain.com/page2/ domain.com/page3.php到domain.com/page3 /

我能找到的所有例子都集中在CMS等等。查询字符串等等。没有什么只关注基本URI,我认为这可能是导致错误的原因。

任何帮助表示赞赏!! 感谢

2 个答案:

答案 0 :(得分:5)

我从一个论坛上的一个相当有帮助的小伙伴那里得到了这个 - 从来没有完全理解它,并且有一个警告;除非请求是目录,否则它意味着尾部斜杠。

然而,我认为值得张贴 - 那里的古茹可能很容易发现修复!?

# remove .php; use THE_REQUEST to prevent infinite loops
RewriteCond %{HTTP_HOST} ^www\.domain\.com
RewriteCond %{THE_REQUEST} ^GET\ (.*)\.php\ HTTP
RewriteRule (.*)\.php$ $1 [R=301]

# remove index
RewriteRule (.*)index$ $1 [R=301]

# remove slash if not directory
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /$
RewriteRule (.*)/ $1 [R=301]

# add .php to access file, but don't redirect
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L]

答案 1 :(得分:0)

您可以在htaccess文件中尝试:

Options +MultiViews

但这取决于您的网络服务器是否启用了它。另外,请注意htaccess文件特定于Apache Web服务器,因此如果您使用其他内容,它将无法工作。