使用htaccess删除扩展后,URL无法使用斜杠

时间:2013-09-06 11:51:05

标签: php regex apache .htaccess mod-rewrite

我一直在使用localhost,我的htaccess文件是

Options +FollowSymLinks 
Options -Indexes
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) $1.php [L]

添加htacces代码后,网址

localhost/movies/news.php

工作

localhost/movies/news

也可以,但

localhost/movies/news/

不起作用。它显示“内部服务器错误”。如何使用斜杠而不使用斜杠。

2 个答案:

答案 0 :(得分:2)

你试试这段代码:

Options +FollowSymLinks -MultiViews
RewriteEngine On

# Internally forwards movies/news/ to movies/news.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

答案 1 :(得分:1)

问题是,当您添加斜杠news/.php时,这不起作用。

更好的解决方案是重写为GET变量,如下所示:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php?url=$1 [L]

然后,您可以在脚本中过滤GET变量,并包含所需的文件或内容。