当尝试在URL中隐藏文件扩展名时,索引文件不再起作用

时间:2017-06-24 16:59:15

标签: .htaccess url-rewriting

我一直试图添加' .php'文件扩展名在URL中可选。 因此,如果我有一个类似于' www.example.com/page.php',' www.example.com/page'也会有用。我设法做到了(this articlethis StackOverflow question是我尝试从中获取解决方案的地方。)

以下是我在文章页面上找到的解决方案:

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

但是有一个问题,因为我的网址类似于' www.example.com/articles/index.php '。在' www.example.com/articles/index '工作,' www.example.com/articles '即使在我尝试添加DirectoryIndex(其值为' index.php '或者甚至只是' index)之后,也不再会导致索引页面'。)

是否有其他方法可以隐藏文件扩展名,例如' .php',同时仍然使索引文件按预期工作?

2 个答案:

答案 0 :(得分:0)

您可以使用:

Options -MultiViews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+)/?$ $1.php [L]

谁测试php文件是否存在

答案 1 :(得分:0)

你可以这样做:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^.]+)$ $1.php [NE,L]

只有一个文件测试而不是三个,因此比其他答案更有效。