Regex mod_rewrite-将文件夹更改为文件名

Regex mod_rewrite-将文件夹更改为文件名,regex,apache,.htaccess,mod-rewrite,synology,Regex,Apache,.htaccess,Mod Rewrite,Synology,我正在搜索重写规则或条件以实现此目的: www.example.com/a/ to a.php www.example.com/a/b/ to a,b.php www.example.com/a/b/c/ to a,b,c.php ... 我有这样的规则: RewriteRule ^(.+)/(.+)/(.+)/$ ./$1,$2,$3.php [L] RewriteRule ^(.+)/(.+)/$ ./$1,$2.php [L] RewriteRule ^(.+)/$ ./$1.php [

我正在搜索重写规则或条件以实现此目的:

www.example.com/a/ to a.php
www.example.com/a/b/ to a,b.php
www.example.com/a/b/c/ to a,b,c.php
...
我有这样的规则:

RewriteRule ^(.+)/(.+)/(.+)/$ ./$1,$2,$3.php [L]
RewriteRule ^(.+)/(.+)/$ ./$1,$2.php [L]
RewriteRule ^(.+)/$ ./$1.php [L]
a,b
a,b,c
有效:

www.example.com/products/room/ to products,room.php
www.example.com/products/room/chair/ to products,room,chair.php
但不适用于
a

www.example.com/products/ to products.php
有人能帮我吗

编辑: 我发现这是synology diskstation apache配置的一个问题。
我检查了我的代码,以及另一台服务器上的anubhava代码,它工作正常。

我必须说,非常奇怪的文件名

无论如何,请在
文档\u ROOT/.htaccess
文件中尝试此代码:

RewriteEngine On

## If the request is for a valid directory
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteCond %{DOCUMENT_ROOT}/$1.php -f    
RewriteRule ^([^/]+)/?$ /$1.php [L]

RewriteRule ^([^/]+)/([^/]+)/?$ /$1,$2.php [L]

RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ /$1,$2,$3.php [L]

非常奇怪的文件名,我必须这么说

无论如何,请在
文档\u ROOT/.htaccess
文件中尝试此代码:

RewriteEngine On

## If the request is for a valid directory
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteCond %{DOCUMENT_ROOT}/$1.php -f    
RewriteRule ^([^/]+)/?$ /$1.php [L]

RewriteRule ^([^/]+)/([^/]+)/?$ /$1,$2.php [L]

RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ /$1,$2,$3.php [L]

非常奇怪的文件名,我必须这么说

无论如何,请在
文档\u ROOT/.htaccess
文件中尝试此代码:

RewriteEngine On

## If the request is for a valid directory
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteCond %{DOCUMENT_ROOT}/$1.php -f    
RewriteRule ^([^/]+)/?$ /$1.php [L]

RewriteRule ^([^/]+)/([^/]+)/?$ /$1,$2.php [L]

RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ /$1,$2,$3.php [L]

非常奇怪的文件名,我必须这么说

无论如何,请在
文档\u ROOT/.htaccess
文件中尝试此代码:

RewriteEngine On

## If the request is for a valid directory
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteCond %{DOCUMENT_ROOT}/$1.php -f    
RewriteRule ^([^/]+)/?$ /$1.php [L]

RewriteRule ^([^/]+)/([^/]+)/?$ /$1,$2.php [L]

RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ /$1,$2,$3.php [L]

谢谢你的快速回答,但这对我不起作用现在第一个(…com/a/to a.php)起作用了,但是(a,b.php和a,b,c.php)不起作用了再编辑一次,现在试试。仍然对(a.php)起作用,但对(a,b.php和a,b,c.php)不起作用。这是我奇怪的问题,因为只有(a)或(ab+abc)可以工作,但不能全部一起工作。htaccess中只有一个代码,或者你有更多的代码?谢谢你的快速回答,但这对我不起作用现在第一个(…com/a/to a.php)可以工作了,但是(a,b.php和a,b,c.php)不能再工作一次编辑,现在就试试吧。还在为(a.php)工作吗但不适用于(a,b.php和a,b,c.php)。这是我奇怪的问题,因为只有(a)或(ab+abc)可以工作,但不能全部一起工作。htaccess中只有一个代码,或者你有更多的代码?谢谢你的快速回答,但这对我不起作用现在第一个(…com/a/to a.php)可以工作了,但是(a,b.php和a,b,c.php)不能再工作一次编辑,现在就试试吧。还在为(a.php)工作吗但不适用于(a,b.php和a,b,c.php)。这是我奇怪的问题,因为只有(a)或(ab+abc)可以工作,但不能全部一起工作。htaccess中只有一个代码,或者你有更多的代码?谢谢你的快速回答,但这对我不起作用现在第一个(…com/a/to a.php)可以工作了,但是(a,b.php和a,b,c.php)不能再工作一次编辑,现在就试试吧。还在为(a.php)工作吗但不适用于(a,b.php和a,b,c.php)。这是我奇怪的问题,因为只有(a)或(ab+abc)可以工作,但不能全部工作。htaccess中的代码是唯一的还是您有更多的代码?